我有一个网页通过从服务器获取数据每 5 秒左右在 AJAX 中更新一次。但是,我想仅在用户主动查看页面时执行更新。
当用户在另一个选项卡上,在浏览器以外的另一个程序中,或者该页面不是用户 PC 上的主要活动页面时,不应进行更新。
什么是最准确的跨浏览器测试方法?
我有一个网页通过从服务器获取数据每 5 秒左右在 AJAX 中更新一次。但是,我想仅在用户主动查看页面时执行更新。
当用户在另一个选项卡上,在浏览器以外的另一个程序中,或者该页面不是用户 PC 上的主要活动页面时,不应进行更新。
什么是最准确的跨浏览器测试方法?
jQuery idleTimer 插件应该完全满足您的需求。
文档在这里: http: //paulirish.com/2009/jquery-idletimer-plugin/
如果你更喜欢纯 JS 方式,这里有一个解决方案:
(function(){
var itl=null;
window.onfocus=function(){itl=window.setInterval(/*heartbeat function*/,5000);};
window.onblur=function(){if(itl){window.clearInterval(itl);}};//stop heartbeat
})();
但是不能在框架中工作,您必须在独立选项卡上对其进行测试。