【问题标题】:Stop auto refresh when page is out of focus and minimized on win and mac for all browsers当页面失焦时停止自动刷新,并在所有浏览器的 win 和 mac 上最小化
【发布时间】:2014-02-21 12:12:12
【问题描述】:

我有一个场景,我想在以下情况下停止自动刷新页面:

  1. 失焦
  2. 浏览器已最小化。

我可以先做,但尤其是在 mac 上我无法找到方法。

任何帮助将不胜感激。

【问题讨论】:

  • 自动刷新页面是什么意思?
  • 我编写了一个函数,每 1 分钟调用一次,我想确保该函数仅在页面处于焦点时进行 ajax 调用

标签: javascript refresh


【解决方案1】:

不确定您尝试了什么,但如果您想查找浏览器窗口的非活动状态,您可以使用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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-31
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    • 2013-09-08
    相关资源
    最近更新 更多