检测 Firefox 中的选项卡可见性

发布于 2024-08-13 12:46:38 字数 217 浏览 5 评论 0 原文

我正在编写一个网络应用程序,它每分钟左右执行一次操作,这会(非常短暂地)挂起浏览器。当显示 web 应用程序的选项卡未显示时,我想暂停此操作,以最大程度地减少烦恼。在最新版本的 Firefox 下,有没有办法使用 Javascript 来做到这一点?

编辑:澄清一下,我问的是如何确定某些 JS 代码正在运行的选项卡的可见性 - 而不是如何暂停/恢复挂起浏览器的操作。

I'm writing a webapp that performs an action every minute or so which (very briefly) hangs the browser. I'd like to pause this action when the tab displaying the webapp is not shown, to minimize the annoyance. Is there any way to do this using Javascript, under the latest version of Firefox?

Edit: to clarify, I'm asking about how to determine the visibility of the tab that some JS code is running in - not how to pause/resume the action which hangs the browser.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

撑一把青伞 2024-08-20 12:46:38
var isFocused = true;

window.onblur=function(){
  if(isFocused==true){
    isFocused=false;
  }
}

window.onfocus = function(){
  isFocused = true;
}

现在,您每隔一两分钟执行的操作仅在 isFocused 为 true 时执行。那是您的页面/网络应用程序的选项卡获得焦点的时候。

var isFocused = true;

window.onblur=function(){
  if(isFocused==true){
    isFocused=false;
  }
}

window.onfocus = function(){
  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.

揽月 2024-08-20 12:46:38

未测试,但这样如何:

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.

匿名的好友 2024-08-20 12:46:38

我相信您需要使用 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文