有人可以在这里解释一下,为什么我在重定向之前收到警报? 有没有办法切换它们?
function test() {
window.location.href="https://www.google.com";
window.onload = alert("It's loaded!")
}
这是一个例子:
最佳答案
这里存在三个不同的问题:
加载新位置是异步的
在新页面加载之前,为location
分配新值不会停止一切。它将分配该值,然后在将来的某个时刻,浏览器将加载新页面。与此同时,一切都会照常进行。
onload
期望传递一个函数
alert("已加载!")
调用警报函数(立即)并计算为该调用的返回值(这不是一个函数)。然后将该返回值分配给 onload
。
要分配函数,您需要有一个实际的函数,例如:
onload = alert.bind(window, "It's loaded!");
或
onload = function () { alert("It's loaded!"); };
每个页面都是一个独立的JS环境
当您离开页面时,您将创建一个新的执行环境。所有变量和数据都会丢失。 (尽管您可以通过本地存储和 cookie 存储内容,并通过 URL 将内容传递到其他来源)。
您要离开的页面不可能对您要访问的页面执行任何操作。您无法为下一页设置 onload 处理程序。
关于javascript - 为什么在重定向之前运行警报?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39914479/