为什么设置window.location.href不会停止脚本执行

Bil*_*soe 8 javascript redirect

以下代码将位置更改为www.bing.com,无论重定向是否为1或任何其他数字.如果重定向为1,则记录"正在重定向",然后重定向到www.bing.com.我最好的猜测是,当设置href时,会触发change-event,但在执行之前需要一些滴答.同时,第一行代码仍然执行.要么?做什么会发生什么?

if (redirect == 1) {
    console.log("is redirecting");
    window.location.href = "http://www.google.com";
}

window.location.href = "http://www.bing.com";
Run Code Online (Sandbox Code Playgroud)

Dan*_* W. 7

您正在设置属性,而不是调用方法,区别很重要:

window.location.href = "something";
Run Code Online (Sandbox Code Playgroud)

Javascript 以异步和基于事件的方式工作,这意味着浏览器不会在您设置属性时检查窗口位置是否发生变化,而是在一些不可预测的时间之后。

有时您希望在位置更改时触发或触发退出事件。

当您将其与 HTTP 位置标头进行比较时,行为是相同的。有时,即使您发送位置更改标头,您也希望 PHP 脚本继续运行。


Lew*_*wis 4

我想说这种行为是未定义的。

当你将预期的url设置为 时window.location.href,当前页面实际上会处于该dying状态。而之后编写的代码的结果根本无法预测。

  • 但为什么不在死亡状态时停止代码执行呢? (2认同)