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

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

Если я размещу этот код (window.location = "/other-page-url";) в первой строке после открытия тега HEAD и перенаправлю страницу на другую, остановит ли он выполнение следующих скриптов? Я хочу быть уверен, что если есть, скажем, какой-то встречный скрипт, вызванный во второй строке, сразу после перенаправления, он не будет выполняться.

Может быть, в JavaScript есть какой-то метод, который останавливает загрузку/рендеринг страницы?


person mra214    schedule 06.01.2012    source источник
comment
Вместо того, чтобы инициировать перенаправление на стороне клиента, я рекомендую отправить заголовок Location: ..., чтобы запросить перенаправление еще до того, как страница будет отображена.   -  person Rob W    schedule 06.01.2012


Ответы (3)


Как только вы перенаправите пользователя на другую страницу, текущая страница немедленно прекратит выполнение.

person Joseph Silber    schedule 06.01.2012
comment
Означает ли это, что пользователь не заметит никаких изменений на самой странице, кроме смены URL в адресной строке? Я имею в виду, увидят ли они рендеринг страницы, если компьютер или интернет-соединение работают медленно? - person mra214; 06.01.2012
comment
@ mra214 - Верно. Пользователь не увидит ничего отображаемого на странице. - person Joseph Silber; 06.01.2012
comment
Я столкнулся с той же проблемой и добавил некоторую трассировку в console.log сразу после того, как window.location = /new_url показывает, что выполнение скрипта не останавливается после перенаправления. Я был на хроме, на OSX и не проверял это в других браузерах, но, по крайней мере, это доказывает, что поведение не является одинаковым во всех браузерах. - person Shyam Habarakada; 18.04.2012
comment
Я обнаружил, что это не совсем так. Если я поставлю предупреждение сразу после window.location, оно все равно сработает, поэтому я предполагаю, что у него есть небольшая задержка, прежде чем страница перестанет выполняться и перенаправить. - person nxtwrld; 15.08.2013
comment
Это плохой ответ. Если вы находитесь в обратном вызове и выполняете перенаправление, код все равно будет выполняться в основной функции, и только после этого произойдет перенаправление. - person Sorin Trimbitas; 04.08.2014
comment
@SorinTrimbitas Если я размещу этот код ... в первой строке после открытия тега HEAD и перенаправлю страницу на другую, остановит ли он выполнение следующих скриптов? Ответ: да. - person Joseph Silber; 04.08.2014

Вы можете сделать это перед выполнением любого Javascript, используя тег <meta> в вашем <head> перед любыми тегами <script>:

<meta http-equiv="Refresh" content="0; url=http://www.example.com/">

Это перенаправит браузер на example.com, как только он обнаружит тег.

person NobRuked    schedule 06.01.2012