【发布时间】: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