Safari JavaScript setTimeout 在最小化时停止

2023-11-23

这与以下几点有关:
El Capitan 版 Safari 9.1
Safari 10 塞拉利昂版

有谁知道当浏览器或选项卡失去焦点(主要是最小化)时,Safari 在 JavaScript 引擎中对 setTimeout() 做了什么?

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

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

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

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

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


你可能应该使用设置时间间隔相反,因为根据这个答案, setInterval即使限制为每秒 1 次,仍然有效。

WindowOrWorkerGlobalScope mixin 的 setInterval() 方法 重复调用一个函数或执行一个代码片段,具有固定的 每次通话之间的时间延迟。返回一个间隔 ID。

语法 varIntervalID =scope.setInterval(func,delay[param1, 参数2,...]); var IntervalID =scope.setInterval(代码, 延迟); 参数

func每延迟毫秒执行一次的函数。

code可选语法允许您包含字符串而不是函数, 每延迟毫秒编译并执行一次。这个语法 不建议使用 eval() 的原因与使用 eval() 的原因相同 安全风险。

delay时间,以毫秒为单位(千分之一 第二),计时器应该在指定的执行之间延迟 函数或代码。如果该参数小于 10,则值为 10 用过的。请注意,实际延迟可能会更长;参见“原因 延误时间超过指定时间” WindowOrWorkerGlobalScope.setTimeout() 为例。

参数1,...,参数N可选的附加参数传递给 一旦定时器到期,由 func 指定的函数。


非活动选项卡中的超时限制为 >=1000ms

从后台减少负载(以及相关的电池使用量) 选项卡,超时通常被限制为每次触发不超过一次 第二个(1000 毫秒)位于非活动选项卡中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Safari JavaScript setTimeout 在最小化时停止 的相关文章

  • 从 Internet Explorer 打印时的默认文件名

    使用 pdf 打印机打印网页 将页面另存为 pdf 时 Chrome 和 Firefox 都使用该页面
  • 在具有子项的“contenteditable”div 中设置插入符位置

    我有一个这样的 HTML 结构 div This is some plain boring content div 我还有这个函数 允许我将插入符位置设置到 div 中我想要的任何位置 Move caret to a specific po
  • javascript:全局变量泄漏

    每当我向 Firefox 提交插件时 我都会收到一封电子邮件 告诉我我的一些变量正在泄漏到全局范围内 一旦他们告诉我我解决了问题 但在那之前有什么方法 程序 来检查变量是否泄漏到全局范围内 Thanks Both JSLint http w
  • 通过纯 JavaScript 获取 div 的第 n 个子元素

    我有一个名为 myDiv 的 div 元素 我怎样才能得到 myDiv 的第n个孩子DOM https en wikipedia org wiki Document Object Model操纵 Markup function reveal
  • 返回上一页

    我正在使用表格来 评价 页面 此表单将数据 发布 到其他地方的 php 脚本 我只是想在处理表单后显示一个链接 这将使用户返回到上一页 我可以在 php 脚本中使用 javascript 来执行此操作吗 GF 您可以使用链接来调用histo
  • 有什么方法可以复制 div 的渲染 HTML 吗?

    我正在开发电子邮件签名生成器 我想通过按按钮复制最终签名 而不是手动选择签名并将其复制到剪贴板 这意味着我需要它们的图像 文本和样式 我尝试了几种变体 包括 w3schools 的变体 但没有成功 其中一些只是复制文本 但没有样式 例子 h
  • 需要参数的addEventListener(和removeEventListener)函数

    我需要向 8 个对象 手掌 添加一些侦听器 这些对象是相同的 但行为必须根据它们的位置而改变 我有以下 丑陋的 代码 root palmsStatus B B B B B B B B if root palmsStatus 0 N root
  • “require(...)”是常见的 JavaScript 模式还是库函数?

    我通常发现这是 node js 脚本 模块以及 phantomJS casperJS 等中的第一行 我很好奇 这是否是服务器端 javascript SSJS 的常见模式 类似于 include在 C C 中或import在 Java 中
  • 如何将类型添加到 Vite 库构建中?

    我按照vite文档使用图书馆模式 https vitejs dev guide build html library mode我能够生成一个工作组件库 我创建了该项目vue ts预设 在我的组件中 我定义了道具及其类型 并使用了一些接口 但
  • 为什么函数声明在不同浏览器中的处理方式不同?

    虽然我在谷歌中找不到对此的引用 但我熟悉这样一个事实 在 javascript 中 全局函数声明在执行任何代码之前都会被解释 换句话说 这工作得很好 f function f 但是 我注意到 chrome 和 firefox 对全局函数声明
  • 修改 Twitter 帖子上可编辑 Div 的内容

    我正在编写一个 chrome 扩展 它可以帮助用户在 Twitter 上输入内容 当在 twitter 上写推文时 twitter 会打开一个可编辑的 div 容器 当用户输入内容时 twitter 大概正在使用某些网络框架 会生成子 di
  • 非法使用break语句; javascript

    当这个变量达到一定数量时 我希望循环停止 但我不断收到错误 未捕获的语法错误 非法的中断语句 function loop if isPlaying jet1 draw drawAllEnemies requestAnimFrame loop
  • Next.js:错误:React.Children.only 期望接收单个 React 元素子元素

    我有一个名为Nav inside components目录及其代码如下所示 import Link from next link const Nav gt return div a Home a a About a div export d
  • Aurelia 中的角度服务?

    我还没有找到详细说明如何从 Angular 1 x 迁移到 Aurelia 的详细文档 到目前为止 我只看到人们详细介绍了 Angular 的概念directive可以在 Aurelia 中使用重制 customElement 好吧 足够简
  • Angularjs : $locationProvider.hashPrefix("!") ;

    我想将网址显示为 www test com 因为我正在使用 locationProvider hashPrefix 但它显示网址为 www test com 我想 哈希之前而不是哈希之后 Thanks var app angular mod
  • for循环中需要声明变量吗?

    有什么区别 for var i 0 i lt 5 i for i 0 i lt 5 i 是否有必要包含 var 关键字 我知道 var 关键字会影响变量范围 但我无法理解是否有必要在 for 循环中包含该关键字 在第二个示例中 您的变量是全
  • Vue-Router 抽象父路由

    我正在尝试将当前网站迁移到 vuejs 站点地图必须是 login signup password reset browse search dozens of other routes 由于其中一些路线共享大量 fx 因此我将它们设为父路线
  • 将两个数字相加将它们连接起来而不是计算总和

    我将两个数字相加 但没有得到正确的值 例如 做1 2返回 12 而不是 3 我在这段代码中做错了什么 function myFunction var y document getElementById txt1 value var z do
  • 如何使用 javascript 更改文件扩展名

    有谁知道在 Javascript 中更改文件扩展名的简单方法吗 例如 我有一个带有 first docx 的变量 但我需要将其更改为 first html 这将改变字符串包含文件名 let file first docx file file
  • 为什么 try catch 块没有捕获 Promise 异常?

    我对承诺的错误处理感到困惑 答案可能很明显 但我不明白 我有以下示例代码 var test async function throw new Error Just another error try test then catch err

随机推荐

  • 如何以编程方式检测 iPhone 6 和 6 Plus 查看模式[重复]

    这个问题在这里已经有答案了 有没有办法以编程方式识别视图模式 在设置 gt 显示和亮度中 许多应用程序设计在标准模式和缩放模式下的行为有所不同 请参考图片 任何帮助 将不胜感激 您可以使用 UIScreen mainScreen nativ
  • React 组件未显示在匹配的路由上(react-router-dom)

    大家好 我不知道发生了什么事 我有以下路线
  • 使用 Curl 和 Oauth 2 将文件上传到 DropBox 的 DropBox API PUT 示例

    我正在到处搜索 但无法找到合适的示例 而且我不够精通 无法通过文档对其进行排序 比我更有知识的人可以告诉我如何为 OAUTH 2 形成 CURL 命令吗 我只需要 OAUTH 2 密钥吗 我正在显示一个应用程序密钥 应用程序秘密和 oaut
  • PDO:MySQL 服务器已消失

    我有一个脚本 每晚都要进行大量的跑腿工作 它使用在循环中执行的 PDO 准备语句 前几个运行良好 但后来我发现它们都失败并出现错误 MySQL 服务器已经消失 我们运行 MySQL 5 0 77 PHP 版本 5 2 12 网站的其余部分运
  • 斜边按钮

    我正在尝试构建如下所示的按钮 我可以使用以下方法完成此操作 after and CSS 三角形 但我无法使用可变高度元素 有什么方法可以实现这一点并保持可变高度吗 Fiddle http jsfiddle net AaP47 2 在这种情况
  • contenteditable div 中子元素的键盘事件?

    我有一个 div 其 contenteditable 属性已设置为 true 如何让子级响应键盘事件 似乎唯一的方法是捕获父 div 中的事件并通过选择 api 找出子 div 有没有更好的办法 更具体地说 我可以将键盘事件处理程序附加到子
  • 如何在 python 中加载 C# dll?

    如何在 python 中加载 c dll 我是否必须在 c 文件中添加一些额外的代码 如在 C 文件中导出 我不想使用 IronPython 我想将一个模块导入Python 套餐 NET 的 Python和Python实现铁蟒现在以同样的方
  • 如何使用 Criteria API 指定悲观锁?

    我正在使用 Criteria API 检索 hibernate 中的对象列表 但是 我需要锁定这些对象 因为同时执行的另一个线程将获取确切的对象 并且在没有悲观锁的情况下只有一个线程会成功 我尝试如下 但它不起作用 List esns se
  • 将工作簿中的每个工作表保存为单独的 CSV 文件

    如何将 Excel 工作簿中的每个工作表分开保存CSV带有宏的文件 我有一个包含多个工作表的 Excel 我正在寻找一个宏 可以将每个工作表保存到单独的CSV comma separated file Excel 不允许您将所有工作表保存到
  • ActionBarSherlock 上的activatedBackgroundIndicator 的自定义背景不起作用

    我在用着动作栏夏洛克我正在尝试定制激活背景指示器行背景的属性 如果我使用最新的android sdk 没有动作栏夏洛克 我可以自定义背景 创建以下样式资源 值 style xml并将其定义为AndroidManifest xml as an
  • 数据表重新初始化 (jQuery)

    当我首先加载页面时 表中没有任何内容 并且数据表未初始化 在添加了一些交互行之后 当添加所有行 使用ajax调用 时 我以这种方式初始化数据表 oTable table dataTable bJQueryUI true bSortClass
  • HTML 属性名称中允许使用哪些字符?

    在 HTML 属性中名称 值对 名称 部分允许使用哪些字符 看着一些共同属性似乎只使用字母 a z 和 A Z 但是还允许使用其他什么字符 也许是数字 0 9 连字符 和句点 有没有规格这个 这取决于你所说的 允许 是什么意思 每个标签都有
  • Apache:如何从网络之外的计算机访问我的网页?

    我想从网络外部的计算机访问我的网页 我们的网络有 192 168 0 1 192 168 0 255 这样的 IP 网络通过本地网关 192 168 0 1 连接到 Internet 并到达 DNS 服务器 193 xxx xxx xxx
  • 确定用户是否拒绝了 CoreLocation 权限

    是否可以以编程方式确定用户已拒绝使用其位置的权限 其次 如果用户拒绝了权限 是否可以重新提示用户 您可以使用以下方式确定您的授权状态authorizationStatus类方法上CLLocationManager 这会返回一个CLAutho
  • 从 C# 调用 python 代码(.py 文件)

    我有一些执行特定任务的 python 代码 我需要从 C 调用此代码 而不将 python 文件转换为 exe 因为整个应用程序是基于 C 构建的 我怎样才能做到这一点 如果你的Python代码可以通过执行铁蟒那么这绝对是正确的选择 它提供
  • Django:如何使用存储的模型实例作为表单选择?

    我有一个模型 本质上只是一个字符串 django db models CharField 只会存储该模型的几个实例 我如何使用这些值作为表单中的选择 为了说明这一点 该模型可以是BlogTopic 我想让用户能够选择一个或多个主题来订阅 我
  • Linux 内核导致 UDP 数据包丢失

    我有一个通过多播发送 UDP 数据包的服务器和一些列出这些多播数据包的客户端 每个数据包的大小固定为1040 Bytes 服务器发送的整个数据大小为3GByte 我的环境如下 1 Gbit 以太网 40 个节点 1 个发送方节点和 39 个
  • Java 中的向下转型

    Java 中允许向上转换 但向下转换会产生编译错误 可以通过添加强制转换来消除编译错误 但无论如何都会在运行时中断 既然如此 如果 Java 不能在运行时执行 为什么允许向下转型呢 这个概念有什么实际用途吗 public class dem
  • ICSharpCode.SharpZipLib 验证 zip 文件

    使用 C 的 ICSharpCode SharpZipLib 如何验证传递的文件实际上是有效的 zip 文件 不是右键单击并重命名为 zip 的文件 HttpPost public ActionResult Upload HttpPoste
  • Safari JavaScript setTimeout 在最小化时停止

    这与以下几点有关 El Capitan 版 Safari 9 1Safari 10 塞拉利昂版 有谁知道当浏览器或选项卡失去焦点 主要是最小化 时 Safari 在 JavaScript 引擎中对 setTimeout 做了什么 我创建了一