Javascript 在Firefox中检测选项卡可见性

Javascript 在Firefox中检测选项卡可见性,javascript,firefox,tabs,Javascript,Firefox,Tabs,我正在编写一个webapp,它每隔一分钟左右执行一个动作(非常短暂地)挂起浏览器。我想在显示webapp的选项卡未显示时暂停此操作,以尽量减少麻烦。在最新版本的Firefox下,有没有办法使用Javascript实现这一点 编辑:为了澄清,我想问的是如何确定某些JS代码正在运行的选项卡的可见性,而不是如何暂停/恢复挂起浏览器的操作。未测试,但如何: window.onblur()=函数(){ …在这里暂停您的脚本 } 我不知道Firefox是否将选项卡中的窗口模糊处理为单独的窗口 var isF

我正在编写一个webapp,它每隔一分钟左右执行一个动作(非常短暂地)挂起浏览器。我想在显示webapp的选项卡未显示时暂停此操作,以尽量减少麻烦。在最新版本的Firefox下,有没有办法使用Javascript实现这一点


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

未测试,但如何:

window.onblur()=函数(){
…在这里暂停您的脚本
}

我不知道Firefox是否将选项卡中的窗口模糊处理为单独的窗口

var isFocused = true;

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

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

现在,你每一两分钟执行一次动作,只有在isFocused为真时才执行。此时页面/webapp的选项卡处于焦点状态。

我认为您需要处理window.onblur事件,因为出于安全原因,禁止从网页中的脚本访问浏览器窗口(仅允许使用特权脚本)


您想做什么(从子窗口或网页中访问浏览器窗口)在中进行了描述,但其中确实提到只有特权脚本才能执行此操作,并且在尝试时可能会出现“Premission denied”错误。

我刚刚尝试了此操作,它可以正常工作(请注意,我使用jQuery将事件处理程序附加到onblur).除了
onblur()
应该是
onblur
之外,我认为这是可行的。但是,我真正想做的是能够检查窗口当前是否有焦点。为什么要进行if(isFocused==true)检查?我在调试过程中使用了一个警报,当它出现时,它还触发了blur事件,结果是一团混乱:d,Firefox无法实时准确地识别和通知javascript选项卡切换。(我从开发插件的经验中了解到)有时候,这些事件可能会触发两次,等等。。。根据你的代码,这可能是无害的,或者完全把你搞砸了。所以,我只是要确保只有在现在聚焦时才将变量设置为“unfocused”。既然已经是“未聚焦”,为什么还要将其更改为“未聚焦”?明白我说的了吗?我明白了。但是if语句只有在您实际在其中执行某些操作时才有意义(如果您连续执行两次,则会破坏页面)。在这个具体的例子中,它是完全冗余的,因为如果将变量设置为相同的值两次,则无关紧要……您是对的。对于原始海报的问题有点过分了。也许我有一个非常糟糕的经历,我下意识地做这些检查:D@Bears:否,如果要使该值100%正确,请使用isFocused==true:)