有人可以在这里解释,为什么我在重定向之前得到警报? 有没有办法切换它们?
function test() {
window.location.href="https://www.google.com";
window.onload = alert("It's loaded!")
}
这是一个例子:
答案 0 :(得分:1)
这里有三个不同的问题:
为 1. days 02/01/2008 03/01/2008 04/01/2008
2. 7 4.76 5.87 4.36
分配新值不会阻止所有内容,直到加载新页面为止。它将分配值,然后,在将来的某个时刻,浏览器将加载新页面。与此同时,一切都将继续正常进行。
location
传递一个函数 onload
调用警报功能(立即)并被评估为该调用的返回值(这不是函数)。然后将该返回值分配给alert("It's loaded!")
。
要分配功能,您需要具有实际功能,例如:
onload
或
onload = alert.bind(window, "It's loaded!");
当您离开页面时,您将创建一个新的执行环境。所有变量和数据都将丢失。 (虽然您可以通过localstorage和cookies存储内容,并通过URL将内容传递给其他来源)。
您要离开的页面无法对您要访问的页面执行任何操作。您无法为 next 页面设置onload处理程序。
答案 1 :(得分:0)
重定向不会开始,直到您当前的Javascript线程执行完毕。因此,在功能结束之前,即在警报被解除之前,该位置不会发生任何事情。
答案 2 :(得分:0)
JavaScript是异步语言。因此,警报的代码不会等待第一个语句的完整执行,即重定向。