仅在查看页面时运行Javascript Ajax调用

前端之家收集整理的这篇文章主要介绍了仅在查看页面时运行Javascript Ajax调用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个在控制器上运行的Web应用程序(几乎没有限制的处理,内存和网络带宽).该页面基本上是一个充满LED的简单HTML文件,应该按间隔更新.在每个时间间隔,Javascript向服务器发送Ajax请求,并根据回复更新所有LED.现在这个工作正常!

问题是当用户打开其中一个页面并开始浏览其他内容时.出于安全性和经济原因,我们不希望在客户端未看到此页面时更新页面.这是算法:

我开发了这个小测试代码,看看页面事件是如何工作的(see live on jsFiddle):

Meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

我需要页面才能在用户当前正在查看时才更新.我搜索了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.

@H_403_21@最佳答案
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/

考虑到这一点,如果您的页面使用间隔计时器进行更新,当窗口失去焦点时,您可以终止间隔,然后在窗口聚焦时再次启动它.

猜你在找的jQuery相关文章