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