【发布时间】:2012-02-28 17:59:46
【问题描述】:
我有一个在控制器上运行的 Web 应用程序(处理、内存和网络带宽几乎没有限制)。该页面基本上是一个简单的 HTML 文件,其中包含应定期更新的 LED。在每个时间间隔,Javascript 都会向服务器发送一个 Ajax 请求,并根据回复更新所有 LED。现在这工作正常!
问题是当用户打开其中一个页面并开始浏览其他内容时。出于安全和经济原因,我们不想在客户没有看到此页面时更新页面。这是算法:
我开发了这个小测试代码来看看页面事件是如何工作的 (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,以下线程似乎不是答案:
- 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。
【问题讨论】:
-
没有问对问题。是否正在查看此页面是关键位。答案是多种多样的,但可能不确定。试试stackoverflow.com/questions/354718/…
-
链接中的问题是关于具有焦点的页面元素。我问的是整个页面是否被查看。
-
页面是一个元素,所以同样的问题......
标签: javascript jquery