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

标签 javascript redirect

无论重定向是 1 还是任何其他数字,以下代码都会将位置更改为 www.bing.com。如果 redirect 为 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";

最佳答案

你是在设置一个属性,而不是调用一个方法,区别很重要:

window.location.href = "something";

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

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

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

关于javascript - 为什么设置 window.location.href 不会停止脚本执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36398482/

相关文章:

javascript - SonarQube 预览模式失败并出现 500 错误

javascript - 重新启动后 RethinkDB/horizo​​n : After some usage getting 400 Bad Request Errors resulting in ReqlRuntimeError. ReqlError [作为构造函数]

php - 是否可以通过界面页面实现搜索引擎友好的重定向?

javascript - 无法使用jquery在html表中添加选择元素

c# mvc4 Html.DropDownListFor调用 Controller

apache - 带代理反向的 HTTPS 重定向 URL

Magento自动重定向到实时服务器上的localhost

php - 如何在 PHP 中进行重定向?

.htaccess - 301 通过 .htaccess 将 *.php 重定向到 *.html?

javascript - 使用 require.js 加载时在 bootstrap 4 中加载 popper.js 时出错