到目前为止,我们有这样的要求,比如每当用户在页面上处于活动状态时,我们都需要自动刷新该页面。每当用户在另一个窗口上最小化/活动时,我们需要停止自动刷新。
用户提出了新的要求。只要用户可见,我们就需要自动刷新页面。就像我水平/垂直设置了 2 个窗口,这样我就可以在一个窗口上工作并可以查看另一个窗口。我怎样才能实现这个功能?
提前致谢。
到目前为止,我们有这样的要求,比如每当用户在页面上处于活动状态时,我们都需要自动刷新该页面。每当用户在另一个窗口上最小化/活动时,我们需要停止自动刷新。
用户提出了新的要求。只要用户可见,我们就需要自动刷新页面。就像我水平/垂直设置了 2 个窗口,这样我就可以在一个窗口上工作并可以查看另一个窗口。我怎样才能实现这个功能?
提前致谢。
尝试这样的一些来检测可见性:
var state='';
(function() {
var hidden, change, vis = {
hidden: "visibilitychange",
mozHidden: "mozvisibilitychange",
webkitHidden: "webkitvisibilitychange",
msHidden: "msvisibilitychange",
oHidden: "ovisibilitychange" /* not currently supported */
};
for (hidden in vis) {
if (vis.hasOwnProperty(hidden) && hidden in document) {
change = vis[hidden];
break;
}
}
if (change)//this is for detecting without focus, so it works for your second requirement
document.addEventListener(change, onchange);
else if (/*@cc_on!@*/false) // IE 9 and lower
document.onfocusin = document.onfocusout = onchange
else
window.onfocus = window.onblur = onchange;
function onchange (evt) {
var body = document.body;
evt = evt || window.event;
if (evt.type == "focus" || evt.type == "focusin")
{
body.className = "visible";
state='visible';
} else if (evt.type == "blur" || evt.type == "focusout")
{ body.className = "hidden"; state='';}
else {
body.className = this[hidden] ? "hidden" : "visible";}
}
})();
function timeout_trigger() {
if(state=='visible')
{
// window.open('PAGE','_SELF'); OR some ajax
}
}
setTimeout('timeout_trigger()', 30000);
IE 9 及更低版本需要 onfocusin 和 onfocusout,而所有其他版本都使用 onfocus 和 onblur。
看看这个答案:JavaScript / jQuery: Test if window has focus for a method to determine if window has focus。
在setInterval
上面示例的部分中,您可以添加代码来刷新页面。
你可以添加一个电话到
location.reload();
用于刷新页面