javascript检测用户正在查看该页面

时间:2011-06-10 14:56:32

标签: javascript

目前我的网站每隔10秒自动重新加载一个javascript函数setInterval( "checklatestmsgidLive();", 10000 );我认为即使用户在其他标签上查看其他网站,该功能仍会继续重新加载该功能。如何让它只在用户查看我的网站时重新加载功能? javascript可以检测用户是否正在查看我的网站吗?

我看到facebook.com墙只在我查看页面时更新新帖子,当我在其他标签上时,它不会更新新帖子。怎么做?

3 个答案:

答案 0 :(得分:6)

var tId, idleTimer;
function initReload() { 
  clearInterval(tId);
  tId = setInterval(checklatestmsgidLive, 10000 );

}
window.onload=window.onfocus=function() {
  initReload()
}
window.onblur=function() {
  clearInterval(tId);
}
window.onmousemove=function() {
  clearTimeout(idleTimer);
  idleTimer = setTimeout(function() { clearInterval(tId);},600000); // idle for 10 minutes
}

答案 1 :(得分:6)

鼠标移动在没有鼠标的触控设备上效果不佳,但我们没有很多选项尚未。 W3C正在开发一个新的API:Page Visibility。它还处于初期阶段,我能找到的唯一已经开始实施的浏览器是Google Chrome(开发者频道)和Internet Explorer 10平台预览版。

由于规范仍然是草稿,因此属性和事件以供应商为前缀。但它仍然有效,Chrome的更新速度非常快。所以我会尝试检测页面可见性是否可用,如果没有回退到鼠标移动黑客。

IE团队有live demo可在Chrome Dev和IE 10平台预览中使用。

答案 2 :(得分:5)

一个简单的解决方案是检测页面中的鼠标移动。