当浏览器未聚焦于 javascript 时监听按键

Listening for keypress when the browser isn't focused in javascript

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

感谢您的帮助。

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

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

to pause/stop a song played in background

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

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

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

这适用于蓝牙遥控器,phone 锁屏也是如此。浏览器支持目前是 Chrome-only,但这绝对是一个有用的 up-and-coming API,在不久的将来可能会看到更多的兼容性。

如果您想在同一个域上执行此操作,那么您可以试试这个 link

否则,正如大家所建议的那样,这是不可能的,否则所有浏览器选项卡都会相互冲突。就像许多网站可以同时打开相同的按钮事件一样 $('button').click(); 所以单击一次也会触发另一个选项卡上的事件,这从用户的角度来看并不好。