javascript - 为什么在重定向之前运行警报?

标签 javascript redirect alert

有人可以在这里解释一下,为什么我在重定向之前收到警报? 有没有办法切换它们?

function test() {
  window.location.href="https://www.google.com";
  window.onload = alert("It's loaded!")
}

这是一个例子:

jsbin:https://jsbin.com/zenidafihu/3

最佳答案

这里存在三个不同的问题:

加载新位置是异步的

在新页面加载之前,为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/

相关文章:

jsp - 重定向后的 Liferay portlet doView()

JSP 重定向 : Session Loss Issues

ios - iOS 中的非模态透明信息警报

浏览器外的 Javascript

javascript - 我如何在 Fabric.js 中处理组中单个对象的事件?

javascript - 有没有一种方法可以在 Javascript 中将多个函数分配给一个函数?

php - 快捷 URL 重定向

javascript - Twitter Bootstrap 关闭按钮不起作用

javascript - 试图覆盖警报,它有效,但执行两次

javascript - Canjs - 使用附加方法扩展 can.Model