启动和停止 JavaScript 刷新

2024-01-07

我有一个页面需要每 60 秒刷新一次。在此页面上我正在使用iBox http://www.enthropia.com/labs/ibox/弹出各种项目。我的问题是元刷新会杀死不需要的弹出窗口。请记住,我对 javascript 的经验为零或很少,因此我的解决方案可能从根本上是错误的。

我想出的解决方案是使用 javascript 来进行刷新。当页面加载时我将启动计时器,当 ibox 弹出时我将清除计时器,当 ibox 关闭时我将再次启动计时器。

我正在使用一个简单的函数来设置它。



function timedRefresh(timeoutPeriod){
    var resetId = 0;
    resetId=setTimeout("location.reload(true);",timeoutPeriod);
}
  

然后我调用该函数<body onload="timedRefresh(60000)">.

我的问题源于当我尝试打电话时clearTimeout(resetID)。我试图从 ibox 脚本的 hide 函数调用该方法,但它实际上并没有清除计时器。我认为这可能是一个范围问题,我可能需要做一些事情Object.clearTimeout(Object.resetID)但这只是一个猜测。


Do this:

function timedRefresh(timeoutPeriod){
    window.resetId = 0; // make it clear it's global by prefixing "window."
    window.resetId=setTimeout("location.reload(true);",timeoutPeriod);
}

然后从相关的ibox函数中使用window.resetId。


看到你的评论我补充一下。

“窗户。”在浏览器中编写脚本时可以工作,如果您在其他地方使用 JS,它可能无法工作。

但是,只要您在网页上,window是全局对象并且“窗户。”在我看来,前缀是一个好方法,可以清楚地表明某些变量是全局的;如果你一致使用它,所有没有“窗口”的变量。在他们面前的永远是本地人。

但是,您应该知道,如果您简单地使用它也可以工作resetId没有任何前缀并且没有var因为任何未声明的变量var自动将范围限制为window.

这个简短的指南 http://www.jibbering.com/faq/faq_notes/closures.html将教您有关 Javascript 中变量可见性、执行上下文和闭包的大部分知识。它将带您成为致命的 Javascript 忍者。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

启动和停止 JavaScript 刷新 的相关文章

随机推荐