当前位置:  开发笔记 > 编程语言 > 正文

最小化时,Safari JavaScript setTimeout停止

如何解决《最小化时,SafariJavaScriptsetTimeout停止》经验,为你挑选了0个好方法。

这与以下内容有关:
用于El Capitan的
Safari 9.1 用于Sierra的Safari 10

当浏览器或标签失去焦点(主要是最小化)时,是否有人知道Safari在JavaScript引擎中针对setTimeout()做什么?

我创建了一个简单的JavaScript Web应用程序,该应用程序在Safari中加载,该应用程序调用JavaScript setTimeout(),该方法将在超时值之后传递另一个要执行的函数。该函数将日期/时间打印到控制台,然后以相同的超时值调用setTimeout()。

如果Safari选项卡失去焦点或浏览器最小化,则一段时间后Safari似乎停止执行setTimeout和随后的要调用的函数,直到返回焦点为止,才执行任何函数。就像事件循环停止处理一样。

注意:不会丢失任何函数调用,它们只会暂停,并在浏览器重新获得焦点时重新启动。

我在Firefox,Chrome或IE11中没有注意到这一点。

引起此问题的主要原因是该问题主要是在我维护的Web应用程序中观察到的,该应用程序使用CometD进行与服务器的通信。CometD库使用setTimeout每30秒执行一次向服务器的请求。如果运行该应用程序的浏览器最小化,则CometD似乎停止与服务器通信,直到再次最大化浏览器为止。

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有