目前我的网站每隔10秒自动重新加载一个javascript函数setInterval( "checklatestmsgidLive();", 10000 );
我认为即使用户在其他标签上查看其他网站,该功能仍会继续重新加载该功能。如何让它只在用户查看我的网站时重新加载功能? javascript可以检测用户是否正在查看我的网站吗?
我看到facebook.com墙只在我查看页面时更新新帖子,当我在其他标签上时,它不会更新新帖子。怎么做?
答案 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)
一个简单的解决方案是检测页面中的鼠标移动。