【发布时间】:2014-02-21 12:12:12
【问题描述】:
我有一个场景,我想在以下情况下停止自动刷新页面:
- 失焦
- 浏览器已最小化。
我可以先做,但尤其是在 mac 上我无法找到方法。
任何帮助将不胜感激。
【问题讨论】:
-
自动刷新页面是什么意思?
-
我编写了一个函数,每 1 分钟调用一次,我想确保该函数仅在页面处于焦点时进行 ajax 调用
标签: javascript refresh
我有一个场景,我想在以下情况下停止自动刷新页面:
我可以先做,但尤其是在 mac 上我无法找到方法。
任何帮助将不胜感激。
【问题讨论】:
标签: javascript refresh
不确定您尝试了什么,但如果您想查找浏览器窗口的非活动状态,您可以使用Page Visibility API,它允许我们检测页面何时对用户隐藏。
注意:(来自 w3.org)
本规范为网站开发人员定义了一种方法 以编程方式确定页面的当前可见性状态 为了开发功率和 CPU 高效的 Web 应用程序。
你必须注册visibilitychange事件,示例代码如下:
<!DOCTYPE html>
<html>
<head>
<script>
var timer = 0;
var PERIOD_VISIBLE = 1000;
var PERIOD_NOT_VISIBLE = 60000;
function onLoad() {
timer = setInterval(checkEmail, (document.hidden) ? PERIOD_NOT_VISIBLE : PERIOD_VISIBLE);
if(document.addEventListener) document.addEventListener("visibilitychange", visibilityChanged);
}
function visibilityChanged() {
clearTimeout(timer);
timer = setInterval(checkEmail, (document.hidden) ? PERIOD_NOT_VISIBLE : PERIOD_VISIBLE);
}
function checkEmail() {
// Check server for new messages
}
</script>
</head>
<body onload="onLoad()">
</body>
</html>
检查已回答的堆栈溢出问题以供参考:
Is there a way to detect if a browser window is not currently active
【讨论】: