如果我导航到另一个页面,setTimeout不起作用
我试图在特定点击事件后10秒执行一个javascript。我使用了setTimeout
setTimeout(function () { alert('hello'); }, 10000);
它可以工作,如果我点击后在同一页面。但如果我导航到其他页面,它不起作用。 因此,假设setTimeout
适用于特定页面而不是整个应用程序是正确的。
有什么方法可以做我想要实现的目标。
浏览器中发生的一切都是文档绑定的。 当您离开当前文档(页面)时,它会被废弃,包括计时器 – 正如预期的那样。
所以你在这里尝试的只是使用计时器是不可能的。
您可以在计时器启动时和完成时写入localStorage
(或sessionStorage
)项目,并从新页面(如果它来自同一来源)您读取项目并计算差异并启动新计时器(或将参数添加为导航到的URL的一部分。
Javascript代码是页面绑定的。
如果您在第1页上包含了x1.js,那么除非您已包含该脚本或放入全局范围,否则此脚本将不会在第2页上执行。
当您导航到另一个页面并且浏览器被刷新时,加载的脚本将丢失,并且将加载包含脚本的新页面。
是的,这是关于它所在的页面。 您可以添加一个标志,指出超时是否有
- 没有设定
- 已设置但未运行或
- 设置并已经运行。
然后,如果用户导航到其他页面,您可以在onunload事件中检查该标志。 如果已经设置但尚未调用,则只需调用它即可。
当您导航到另一个页面时,浏览器将加载新页面,旧页面中的所有setTimeout / etc都将丢失,就像游戏结束并开始新游戏一样。
您可以尝试单页应用程序 ,您的所有页面都在同一个DOM中,并可以实现您的结果
试试这个解决方案
在你的firstpage.html
,
function initFunc() { setTimeout(function () { alert('hello'); }, 10000); } $(document).ready(initFunc);
现在在secondpage.html
您可以随时调用initFunc()。
如果需要将第一页中的函数调用到第二页,则应将该函数编写为全局函数