【问题标题】:Start and Stop a javascript refresh开始和停止 javascript 刷新
【发布时间】:2010-12-29 03:44:31
【问题描述】:

我有一个页面需要每 60 秒刷新一次。在这个页面上,我使用iBox 来弹出各种项目。我的问题是元刷新会杀死不需要的弹出窗口。请记住,我对 javascript 的经验从零到很少,所以我的解决方案可能从根本上是错误的。

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

我正在使用一个简单的函数进行设置。

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

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

我的问题源于我尝试致电clearTimeout(resetID) 时。我试图从 ibox 脚本的隐藏函数中调用该方法,但它实际上并没有清除计时器。我认为这可能是范围问题,我可能需要做某种Object.clearTimeout(Object.resetID) 但这只是猜测。

【问题讨论】:

  • 这些解决方案中的大多数都是正确的。问题显然是范围问题,解决方案正是您想要使用的范围。如果使用 window.resetId 有任何问题,我会更改答案,但这就是我使用的答案。
  • 在我的回答中添加了有用的东西

标签: javascript refresh


【解决方案1】:

这样做:

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。


看到你的评论,我会添加一些东西。

"window." 在浏览器中编写脚本时会起作用,如果您在其他地方使用 JS,它可能不起作用。

但是,只要您在网页上,window 就是全局对象,而 “window.” 前缀是 IMO 一种清晰的好方法某些变量是全局的;如果你一直使用它,所有没有“窗口”的变量。在他们面前总是本地的。

但是,您应该知道,如果您只使用没有任何前缀且没有 varresetId 也可以使用,因为任何未使用 var 自动作用于 window

This short-ish guide 将教您大部分需要了解的关于 Javascript 中的变量可见性、执行上下文和闭包的知识。它会让你成为一个致命的 Javascript 忍者。

【讨论】:

    【解决方案2】:

    你是对的,问题是变量resetId 的范围。当您在函数中使用 var 关键字声明它时,它是该函数的本地,因此不存在于它之外。

    只需在函数外部声明 resetId 以使其成为全局变量,就可以了:

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

    【讨论】:

      【解决方案3】:

      我建议在页面上制作需要刷新的内容,通过 ajax 进行更新。这是一个教程链接http://www.w3schools.com/Ajax/Default.Asp

      【讨论】:

        【解决方案4】:

        最简单的方法是将resetId变量添加到全局作用域:

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

        或者,您也许可以在同一范围内定义 iBox 的隐藏功能,但我不太确定 iBox 是如何工作的。

        关于范围的更多阅读:http://javascript.about.com/library/bltut07.htm

        【讨论】:

          猜你喜欢
          • 2013-12-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-02-21
          • 1970-01-01
          相关资源
          最近更新 更多