Когда вы переходите на новую страницу, существующая страница полностью отключается. Контекст Javascript останавливается и отбрасывается. Независимо от того, произойдет ли это закрытие сразу после нескольких строк кода после того, как куча строк кода полностью изменена. Вероятно, это связано с некоторыми асинхронными моментами, когда начинается загрузка новой страницы.
В течение многих лет была небольшая разница в том, как некоторые браузеры обрабатывали следующие несколько строк кода после установки нового местоположения, но вы никогда не должны рассчитывать на какие-либо строки, выполняемые после того, как вы установили новое местоположение, поскольку установка нового местоположения говорит браузеру закрыть эту страницу и начать загрузку новой.
Быстрый тест в Chrome показывает, что alert()
на самой следующей строке выполняет и ждет ввода пользователя, прежде чем он закончит загрузку следующего места, но это недокументированное поведение и небезопасно рассчитывать.
В Firefox предупреждение кратковременно мигает на экране, но не дожидается ввода пользователя и загружается новая страница.
Умный способ код не размещать любой код после установки window.location
. Таким образом, вы не будете полагаться на поведение, которое зависит от браузеров, и все браузеры будут вести себя одинаково с вашим кодом. Если вы хотите выполнить что-то еще, сделайте это до того, как вы измените window.location
. Или, если вы хотите, чтобы ваш текущий блок кода, чтобы закончить выполнение, а затем изменить местоположение в setTimeout()
как в:
setTimeout(function() {
window.location = "http://www.stackoverflow.com";
}, 1);
Это позволило бы надежно пусть текущий поток финишного выполнения, прежде чем страница была изменена на новый потому что setTimeout()
работает через очередь событий, и это событие не будет обработано до тех пор, пока не будет выполнен текущий поток выполнения (независимо от того, сколько времени потребуется для завершения).
Почему бы вам не попробовать сами и посмотреть .. – Zee
@ Sourabh- Потому что он не просит * осуществления * поведения, но * теоретического * поведения/определенности. – Siguza
Мне нужно что-то, на что я могу положиться (разные браузеры или версии), я проверял документацию, но не нашел ответа. – Gerhard