我有一个在控制器上运行的Web应用程序(几乎没有限制的处理,内存和网络带宽).该页面基本上是一个充满LED的简单HTML文件,应该按间隔更新.在每个时间间隔,Javascript向服务器发送Ajax请求,并根据回复更新所有LED.现在这个工作正常!
问题是当用户打开其中一个页面并开始浏览其他内容时.出于安全性和经济原因,我们不希望在客户端未看到此页面时更新页面.这是算法:
我开发了这个小测试代码,看看页面事件是如何工作的(see live on jsFiddle):
我需要页面才能在用户当前正在查看时才更新.我搜索了Stackoverflow,以下线程似乎不是答案:
> Keep track of which tab was being viewed when page is refreshed
> How to run multiple ajax calls on one page
> Function repeating when page not being viewed
PS. JQuery也存在于服务器上.但如果有一种更简单的方法,我宁愿不使用JQuery.
var focused = false;
function onBlur() {
focused = false;
};
function onFocus(){
focused = true;
};
if (/*@cc_on!@*/false) { // check for Internet Explorer
document.onfocusin = onFocus;
document.onfocusout = onBlur;
} else {
window.onfocus = onFocus;
window.onblur = onBlur;
}
然后你的JavaScript可以检查
if (focused)
{
// process ajax
}
来源:http://www.thefutureoftheweb.com/blog/detect-browser-window-focus
查看他创建的演示,以便您可以看到它的实际应用:http://www.thefutureoftheweb.com/demo/2007-05-16-detect-browser-window-focus/
考虑到这一点,如果您的页面使用间隔计时器进行更新,当窗口失去焦点时,您可以终止间隔,然后在窗口聚焦时再次启动它.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。