【问题标题】:How can I detect whether a browser window is focused or not?如何检测浏览器窗口是否聚焦?
【发布时间】:2009-10-03 23:10:36
【问题描述】:

只有当窗口在后台时,我的页面才会发出通知声音。我可以跟踪window.onfocuswindow.onblur 事件以注意焦点状态何时发生变化。但是,我不知道窗口是否会加载焦点,因为它可能会加载到背景选项卡中,例如。

在收到onfocus/onblur 事件之前如何决定是否播放声音?

【问题讨论】:

    标签: javascript


    【解决方案1】:

    难道你不能假设它加载模糊,然后在收到任何类型的事件(keydown/mousemove)后立即将状态更改为集中?

    【讨论】:

    • 这是个好主意。这不是一个完美的解决方案,但它可能是最有效的方法。
    • mousemove 被触发,即使您在模糊的窗口上移动鼠标,请改用mousedown。在这里试试:quirksmode.org/dom/events/tests/mousemove.html
    【解决方案2】:

    onfocus 事件应该在页面最初打开(在前台)时触发。至少它在 FF3/IE8 中。

    因此您可以在最初打开声音,在触发 onfocus 时将其关闭,然后在触发 onblur 时将其重新打开。

    【讨论】:

    • 即使有人在关闭切换到新标签首选项的情况下打开新标签? (不是说没有,问是因为我想知道。:)
    • 对我来说,当我在新标签页(在后台)中打开时,没有触发 onfocus。一旦我切换到选项卡,它就会触发。因此,如果您从声音开始,那应该可以,对吗?如果选项卡在前台打开,声音会打开,但 onfocus 事件会立即将其关闭。如果选项卡在后台打开,声音会一直保持,直到您切换到该选项卡。
    • 我在 FF3 中看到了这一点,但在 Safari 中没有。直到窗口在后台真正获得焦点后,Safari 才会给我 onfocus。
    猜你喜欢
    • 2023-02-26
    • 2015-04-02
    • 1970-01-01
    • 1970-01-01
    • 2010-09-05
    • 2022-01-19
    • 1970-01-01
    • 2012-03-15
    相关资源
    最近更新 更多