4

我有一个网页通过从服务器获取数据每 5 秒左右在 AJAX 中更新一次。但是,我想仅在用户主动查看页面时执行更新。

当用户在另一个选项卡上,在浏览器以外的另一个程序中,或者该页面不是用户 PC 上的主要活动页面时,不应进行更新。

什么是最准确的跨浏览器测试方法?

4

3 回答 3

2

jQuery idleTimer 插件应该完全满足您的需求。

文档在这里: http: //paulirish.com/2009/jquery-idletimer-plugin/

演示在这里: http ://ajaxdump.com/?8ADKBT6O

于 2012-10-23T05:16:02.077 回答
1

如果你更喜欢纯 JS 方式,这里有一个解决方案:

(function(){
var itl=null;
window.onfocus=function(){itl=window.setInterval(/*heartbeat function*/,5000);};
window.onblur=function(){if(itl){window.clearInterval(itl);}};//stop heartbeat
})();

但是不能在框架中工作,您必须在独立选项卡上对其进行测试。

于 2012-10-23T05:20:34.783 回答
1

最好使用页面可见性 API: https ://developer.mozilla.org/en-US/docs/Web/API/Page_Visibility_API

于 2015-11-11T22:39:53.963 回答