【问题标题】:Listening for keypress when the browser isn't focused in javascript当浏览器不专注于javascript时监听按键
【发布时间】:2019-07-14 03:04:33
【问题描述】:

在 HTML 页面中,我试图捕获关键事件(即使浏览器没有聚焦)以暂停/停止在后台播放的歌曲(在 javascript 中)。我试过 document.onkeydown 但标签需要集中。有什么办法吗?

感谢您的帮助。

【问题讨论】:

  • 仅在您的网页中无法从 js 中获取,也许在浏览器打开的情况下可以使用扩展程序捕获,但在另一个选项卡中。顺便说一句,标签不集中是什么意思
  • 有没有可能……不。用户事件发生在聚焦的特定窗口(选项卡)中

标签: javascript listener


【解决方案1】:

我不这么认为。如果可能的话,当您在其他应用程序中时,网站将能够监控您的击键,这将是一个安全风险。

编辑:看看布拉德的回答。这是一个令人印象深刻的功能!

【讨论】:

    【解决方案2】:

    暂停/停止在后台播放的歌曲

    正如其他人所说,监听按键是不可能的。但是,还有另一种方法可以满足您的需要。

    如果您使用媒体会话 API,系统上的所有标准媒体密钥都将中继到您的网络应用程序。以下是来自the documentation 的示例:

    navigator.mediaSession.setActionHandler('play', function() { /* Code excerpted. */ });
    navigator.mediaSession.setActionHandler('pause', function() { /* Code excerpted. */ });
    

    这也适用于蓝牙遥控器和手机锁屏。浏览器支持目前仅限 Chrome,但这绝对是一个有用的新兴 API,可能会在不久的将来看到更多的兼容性。

    【讨论】:

      【解决方案3】:

      如果您想在同一个域上执行此操作,则可以尝试此链接jQuery: Fire event in other tab/window

      因为每个人都建议这是不可能的,否则所有浏览器选项卡可能会相互冲突。就像许多网站可以同时打开相同的按钮事件$('button').click(); 所以点击一次也会触发另一个标签上的事件,这不利于用户的观点。

      【讨论】:

        猜你喜欢
        • 2017-08-01
        • 1970-01-01
        • 2013-06-05
        • 2015-02-28
        • 2014-01-28
        • 2021-06-01
        • 1970-01-01
        • 2020-02-05
        • 2011-06-14
        相关资源
        最近更新 更多