requestAnimationFrame - 告诉浏览器何时失去焦点

requestAnimationFrame - Tell when browser loses focus

本文关键字:何时 失去 焦点 浏览器 requestAnimationFrame      更新时间:2023-09-26

根据我所读到的内容,requestAnimationFrame可以判断浏览器何时失去焦点。发生这种情况时是否有某种事件会触发?我希望暂停和恢复与请求动画帧相关的代码。

requestAnimationFrame不是

浏览器失去焦点时可以触发或触发事件的元素;它只是设置一个回调。但标准行为是,当浏览器/选项卡失焦时,回调将暂停。因此,很可能您的代码(如果在回调中)已被暂停。

所有浏览器可能不会暂停回调,而是减慢回调速度。但是,W3C 规范似乎意味着暂停,而不是减慢速度:

每当文档的隐藏属性([页面可见性])为假并且动画帧请求回调列表不为空时,用户代理必须定期排队任务...

如果 d 的隐藏属性为 true,请继续执行上下文列表中的下一个条目。

如果要绝对确定代码在选项卡失焦时暂停,或者尝试暂停的代码不是作为 RAF 回调的一部分构建的,则可以考虑使用页面可见性 API。

请注意,RAF 和页面可见性 API 仅在 IE>=10 中可用。