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