【问题标题】:How can I make my Live Feed list update only on the active tab or update it when the tab becomes active again?如何使我的实时提要列表仅在活动选项卡上更新或在选项卡再次变为活动时更新?
【发布时间】:2012-04-08 08:01:22
【问题描述】:

我有一个 Live Feed jQuery 框,它每 10 秒更新一次,并将网站最新的 cmets 放在首位。这工作正常:jQuery 发出 Ajax 请求,调用 PHP,返回新项目或不返回任何项目。

这个框就像一个侧边栏,它出现在我网站的每个页面上。我的问题是,如果用户在网站上打开许多页面,他打开的每个选项卡都会自动刷新,直到他关闭该选项卡。因此,如果有几十个用户每个打开许多页面,这就会成为一个问题,即使 Live Feed 优化得很好,并且其背后的 SQL 查询很快(每个查询 0.0005 秒)。此外,如果用户打开浏览器并打开几个标签,然后开始在其他地方浏览,或者观看他们将永远更新的电影,或者直到他关闭它们。

那么有什么好的解决方案呢?只有当它的选项卡/窗口可见/活动时,我才能更新我的提要?是否有一个事件会在它处于非活动状态而现在再次处于活动状态时触发?

【问题讨论】:

    标签: javascript php jquery mysql


    【解决方案1】:

    尝试在窗口对象上添加 onFocus 事件以触发更新,并添加 onBlur 以停止更新实时源。

    由于您使用的是 jquery,因此您可以这样做

    $(window).('focus',function(){
      //do updates
    })
    
    $(window).('blur',function(){
      //stop updates
    })
    

    【讨论】:

    • 这些是一次性事件还是属性?我的意思是“//do updates”部分将持续工作直到窗口成为焦点,或者当它成为焦点时它只被触发一次?
    • 它会在什么时候触发一次,而且要更新你必须使用一个计时器函数(setInterval)每 10 秒触发一次,在这种情况下,onblur 只需清除时间间隔 id 即可停止更新。跨度>
    猜你喜欢
    • 1970-01-01
    • 2012-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    相关资源
    最近更新 更多