Почему setTimeout не работает при изменении страницы? [Дубликат]

Другое событие 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));
}

2
задан iJade 17 October 2013 в 09:09
поделиться

5 ответов

Все, что происходит в браузере, связано с document . Когда вы переходите от текущего документа (страницы), он становится устаревшим, в том числе таймеры - как и ожидалось.

Так что вы пытаетесь здесь не просто использовать таймеры.

Вы может записать элемент localStorage (или sessionStorage) со временем начала таймера и когда он должен закончиться, и с новой страницы (при условии, что она получена от того же источника), вы читаете элемент и вычисляете разницу и запустить новый таймер (или добавить параметры как часть URL-адреса, к которому вы переходите).

7
ответ дан epistemex 18 August 2018 в 05:46
поделиться

Попробуйте это решение:

В вашем firstpage.html,

function initFunc() {
    setTimeout(function () {
       alert('hello');
    }, 10000);
}
$(document).ready(initFunc);

теперь в secondpage.html вы можете вызвать initFunc (), когда вам нужно.

Если вам нужно вызвать функцию на первой странице до второй, вы должны написать эту функцию как глобальную

0
ответ дан Ajith S 18 August 2018 в 05:46
поделиться

Да, это касается страницы, на которой он включен. Вы можете добавить флаг, в котором указано, установлено ли время ожидания

  • , но не выполнено или
  • установлено и уже выполнено.

Затем, если пользователь перейдет на другую страницу, вы можете проверить этот флаг в событии onunload. Если он был установлен и еще не вызван, просто назовите его.

0
ответ дан enhzflep 18 August 2018 в 05:46
поделиться

Код Javascript связан с страницей. Если вы включили x1.js на стр. 1, то этот скрипт не будет выполняться на стр. 2, если вы не включили его или не включили в глобальную область. Когда вы переходите на другую страницу, и если браузер обновляется, загружаемые сценарии будут потеряны, и будет загружена новая страница с включенными сценариями.

1
ответ дан Nishu Tayal 18 August 2018 в 05:46
поделиться

Когда вы переходите на другую страницу, браузер загрузит новую страницу, и весь ваш setTimeout / etc на старой странице будет потерян, как и игра, и начните новую игру.

Вы можете попробовать Одностраничное приложение , которое вся ваша страница находится в одной и той же DOM и может достичь вашего результата

0
ответ дан simplemx 18 August 2018 в 05:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: