【问题标题】:Javascript: Interaction setTimeout() and window.location.assign()Javascript:交互 setTimeout() 和 window.location.assign()
【发布时间】:2020-11-23 22:18:00
【问题描述】:

我今天开始学习 javascript,但似乎无法使用 setTimeout() 和 window.location.assign(dest) 工作。

基本上我要做的是在 0.5 秒后更改站点位置,然后在 0.5 秒后更改一些带有变量的文本。

setTimeout(function foo(){
    window.alert("DID X");
    // document.getElementById("text_element").innerText = "Changed"
}, 1000);

setTimeout(function bar()
{
    window.location.assign("destination.html"); // on removal both alerts execute
    window.alert("DID Y");                       
}, 500);

玩了之后,我注意到函数 foo 或 bar 在另一个不存在的情况下工作。 我还注意到,当我不重新分配窗口位置时,两个警报都会触发。似乎更改站点位置会“吞下”第二个 setTimeout。

遗憾的是,我还没有找到在线喷气机的解决方案。提前感谢您的帮助。

【问题讨论】:

  • 这不起作用,因为页面重新加载并且所有代码再次加载。也许你想知道为什么 alert 被执行,尽管 location.assign 之前被执行过。这是因为 javascript 继续运行并且重新加载需要一些时间。只要警报弹出窗口打开,该页面就不会重新加载。它会冻结浏览器,直到您关闭它。
  • 您可以尝试使用基于哈希的位置并收听onhashchange 事件。
  • 啊,好的,谢谢。将与事件监听器一起尝试。

标签: javascript location href settimeout


【解决方案1】:

执行的第一行代码是:window.location.assign("destination.html");

运行该行代码后,将跳过其余代码,因为窗口更改了位置并且旧窗口已消失。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-07
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多