2015-11-19 3 views
3

В настоящее время я пишу программу javascript, и я хотел бы обновить веб-страницу, а затем перейти к вызову функции, которая впоследствии изменяет обновленную страницу.Как обновить страницу и продолжить выполнять действия после этого?

Однако, когда я вызываю location.reload(), страница заканчивает выполнение действий до обновления, несмотря на то, что я разместил их после обновления кода. Как я могу получить страницу для создания действий после обновления?

+2

Вам нужно будет поместить этот код на * новую страницу *. Ничего, что старая страница делает после того, как 'location.reload()' будет влиять на новую страницу. Вот как это работает. – Pointy

+0

Можете ли вы предоставить нам примерный код и дать нам некоторый контекст того, что вы пытаетесь выполнить? –

+0

'location.reload()' не блокируется, поэтому выполняется до его перезагрузки. –

ответ

1

Javascript не продолжает выполнять после перезагрузки страницы, он начинается с новой.

Если вам действительно нужно обновить страницу, а затем приступить к определенному действию, вам нужно будет как-то сказать, что ваш код начнется с того места, где он остановился.

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

window.location.href += "#continueScript"; 
location.reload(); 

затем в вашей функции проверьте хэш.

if(window.location.hash == "#continueScript") { 
    continueMyScript(); 
}; 
3

Вы можете обмануть, чтобы сделать это с помощью sessionStorage:

//in some function: 
sessionStorage.setItem('onReload', 'doFn1'); 
location.reload(); 
//elsewhere, to be called on page load: 
if(sessionStorage.getItem('onReload') === 'doFn1') { 
    sessionStorage.setItem('onReload', ''); 
     // do your code 
} 

В конечном счете, это не очень хорошая практика. Почему вы перезагружаете страницу? Вы, вероятно, можете выполнить то, что хотите без перезагрузка страницы.

Смежные вопросы