gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 04:19:45 25 4
gpt4 key购买 nike

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

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

A flowchart of the page update algorithm

我开发了这个小测试代码来查看页面事件的工作原理 (see live on jsFiddle):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
function m(msg){
document.getElementById("logplace").innerHTML+=msg+"<br/>";
}
</script>
</head>
<body onblur="m('Blur')" onerror="m('Error')" onfocus="m('Focus')" onload="m('Load')" onresize="m('Resize')" onunload="m('Unload')">
<span id="logplace"></span>
</body>
</html>

如果用户当前正在查看页面,我需要更新页面。我搜索了 Stackoverflow,但以下线程似乎不是答案:

附言。 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/

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

关于javascript - 仅在查看页面时运行 Javascript Ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9174035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com