当用户不在页面上时,是否可以刷新网页,比如每分钟?例如,如果我正在访问一个PageX并停留在页面上它不会刷新但是一旦我离开页面(即切换到另一个选项卡/窗口或程序,那么PageX每隔x分钟刷新一次)还是秒?我该如何解决这个问题?谢谢.
更新:
"在页面上"表示页面是当前窗口,即它具有焦点.因此,如果PageX有一个指向弹出窗口的链接,比如100 x 100,点击它会打开弹出窗口,而页面在那个小小的弹出窗口后仍然可见,它没有焦点,因此需要刷新,如上所述以上.
任何事情都不清楚请问.
更新2
正如下面Mattk所建议的那样.以下似乎是在Firefox中工作(最近没有检查过)和Chrome.在IE 8中,如果我切换到另一个选项卡或程序,它不会刷新页面,但如果我在页面上并单击地址栏,它将开始刷新页面.任何想法如何让它在IE中工作?
var pageFocused = false;
function onPageFocus(){
pageFocused = true;
//document.body.className = 'focused';
}
function onPageBlur() {
pageFocused = false;
//document.body.className = 'blurred';
};
function checkActivity() {
if(pageFocused == false){
location.reload(true);
}
}
setInterval("checkActivity()", 1 * 1000);
if (!+"\v1") { // check for Internet Explorer
document.onfocusin = onPageFocus;
document.onfocusout = onPageBlur;
} else if (/*@cc_on!@*/false) {
document.onfocusin = onPageFocus;
document.onfocusout = onPageBlur;
} else {
window.onfocus = onPageFocus;
window.onblur = onPageBlur;
}
Run Code Online (Sandbox Code Playgroud)
通过检测鼠标悬停和按键(对于那些不使用鼠标的人)来跟踪用户在页面上的活动,并将页面焦点放在页面上,因为我认为模糊事件不适用于您正在做的事情文档/页面级别。原因是模糊事件似乎仅在您返回选项卡时被调用,而不是在您实际离开页面时被调用。
每当发生这些事件(鼠标悬停、按键或页面焦点)时,请将 pageFocused 重置为 true。
var pageFocused = false;
function onPageFocus(){
pageFocused = true;
}
Run Code Online (Sandbox Code Playgroud)
然后每隔 30 秒,您可以运行一个函数来查看是否有任何变化。这将每三十秒(30000 毫秒)运行一个名为 checkActivity 的函数。
setInterval("checkActivity()", 30 * 1000);
Run Code Online (Sandbox Code Playgroud)
在该函数中,如果三十秒内没有任何活动,则重新加载页面。
function checkActivity() {
if(pageFocused == false){
location.reload(true);
}
Run Code Online (Sandbox Code Playgroud)
然后页面将重新加载并将 pageFocused 设置回 false,并为您重新开始整个过程。
| 归档时间: |
|
| 查看次数: |
3729 次 |
| 最近记录: |