检测 Firefox 中的选项卡可见性
我正在编写一个网络应用程序,它每分钟左右执行一次操作,这会(非常短暂地)挂起浏览器。当显示 web 应用程序的选项卡未显示时,我想暂停此操作,以最大程度地减少烦恼。在最新版本的 Firefox 下,有没有办法使用 Javascript 来做到这一点?
编辑:澄清一下,我问的是如何确定某些 JS 代码正在运行的选项卡的可见性 - 而不是如何暂停/恢复挂起浏览器的操作。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
现在,您每隔一两分钟执行的操作仅在 isFocused 为 true 时执行。那是您的页面/网络应用程序的选项卡获得焦点的时候。
Now, that action you perform, every minute or two, do it only when isFocused is true. That is when the tab of your page/webapp is focused.
未测试,但这样如何:
window.onblur() = function () {
...在这里暂停你的脚本
我不
知道 Firefox 是否将选项卡中的窗口模糊处理为单独的窗口。
Not tested, but how about this:
window.onblur() = function () {
... pause your script here
}
I don't know if Firefox handles the window blur in tabs as separate windows.
我相信您需要使用 window.onblur 事件,因为出于安全原因禁止从网页中的脚本访问浏览器窗口(仅允许特权脚本)。
您想要执行的操作(从子窗口或网页内访问浏览器窗口)在 Mozilla 开发人员中心,但它确实提到只有特权脚本才能执行此操作,当您尝试时,您可能会收到“权限被拒绝”错误。
I believe you will need to make do with the window.onblur event, because accessing the browser window from a script in a webpage is forbidden for security reasons (only allowed for privileged scripts).
What you want to do (access the browser window from within a child window or a webpage) is described in Mozilla Developer Center, but it does mention there that only a privileged script can do it, and you'll probably get a "Premission denied" error when you try.