Другое событие NullPointerException
возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.
String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals
для гарантированного непустого объекта.
Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null
.
Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.
String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Все, что происходит в браузере, связано с document . Когда вы переходите от текущего документа (страницы), он становится устаревшим, в том числе таймеры - как и ожидалось.
Так что вы пытаетесь здесь не просто использовать таймеры.
Вы может записать элемент localStorage
(или sessionStorage
) со временем начала таймера и когда он должен закончиться, и с новой страницы (при условии, что она получена от того же источника), вы читаете элемент и вычисляете разницу и запустить новый таймер (или добавить параметры как часть URL-адреса, к которому вы переходите).
Попробуйте это решение:
В вашем firstpage.html
,
function initFunc() {
setTimeout(function () {
alert('hello');
}, 10000);
}
$(document).ready(initFunc);
теперь в secondpage.html
вы можете вызвать initFunc (), когда вам нужно.
Если вам нужно вызвать функцию на первой странице до второй, вы должны написать эту функцию как глобальную
Да, это касается страницы, на которой он включен. Вы можете добавить флаг, в котором указано, установлено ли время ожидания
Затем, если пользователь перейдет на другую страницу, вы можете проверить этот флаг в событии onunload. Если он был установлен и еще не вызван, просто назовите его.
Код Javascript связан с страницей. Если вы включили x1.js на стр. 1, то этот скрипт не будет выполняться на стр. 2, если вы не включили его или не включили в глобальную область. Когда вы переходите на другую страницу, и если браузер обновляется, загружаемые сценарии будут потеряны, и будет загружена новая страница с включенными сценариями.
Когда вы переходите на другую страницу, браузер загрузит новую страницу, и весь ваш setTimeout / etc на старой странице будет потерян, как и игра, и начните новую игру.
Вы можете попробовать Одностраничное приложение , которое вся ваша страница находится в одной и той же DOM и может достичь вашего результата