无论重定向是 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/