window.history.back();警报(“第二个”); ...我希望窗口转到上一页,然后显示警报。实际发生的是“2nd”首先弹出,然-6ren">
gpt4 book ai didi

javascript - 为什么 `alert("2nd") ;` execute before ` window.history.back();`?

转载 作者:搜寻专家 更新时间:2023-11-01 04:17:09 25 4
gpt4 key购买 nike

当我运行以下两个 JavaScript 命令时...

> window.history.back();警报(“第二个”);

...我希望窗口转到上一页,然后显示警报。实际发生的是“2nd”首先弹出,然后窗口返回。如果我像这样反转它们......

> alert("2nd"); window.history.back();

...命令仍然以相同的顺序执行。我不了解 JavaScript 控制流的哪些方面?我如何让 window.history.back(); 先运行?

最佳答案

嗯,在其他页面加载后不显示警报是有道理的。该脚本是加载页面的一部分,因此如果这样做可行,则意味着您可以在前一页中注入(inject) javascript,这当然是不可取的。

所以在我看来,有 3 种可能性:

  1. 后退功能正在阻塞并立即工作,导航到上一页,并终止正在运行的脚本。这显然不会发生,否则您根本不会收到警报。
  2. 后退功能立即生效,但脚本仅在浏览器有足够的信息开始加载其他文档时终止。似乎并非如此。如果是这样,浏览器可能会在警报打开时在后台加载文档,但这并没有发生。
  3. 后退函数只是向浏览器发出返回的信号,脚本会一直运行,直到在该请求实际完成之前它处于空闲状态。好像是这样的。导航仅在警报关闭且脚本结束时才开始。 (至少在 Chrome 中)。

无论如何,如果你想让它工作,你必须从你导航到的页面调用 alert

关于javascript - 为什么 `alert("2nd") ;` execute before ` window.history.back();`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22732577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com