browser - 键盘上的播放/暂停按钮如何工作?

标签 browser keyboard-events

我的电脑键盘和许多现代键盘一样,有一个播放/暂停音乐的按钮。它适用于许多应用程序,例如 Spotify 本地播放器、Google Music 网络播放器、iTunes 等。其中一些是 native 的,一些是浏览器中的。即使程序(或浏览器选项卡)不在焦点上,该按钮也能工作。这些程序如何与此功能 Hook ?

我希望它的工作原理如下,但这只是一个猜测:

  • Web app 向浏览器注册一个声道,提供一些暂停/播放/停止等回调。
  • 浏览器向操作系统注册其声道,提供一些回调函数
  • 按下键盘上的暂停按钮
  • 操作系统为注册的声道调用回调
  • 浏览器的 native 回调调用 Web 应用程序的 Javascript 回调函数,该函数执行暂停

  • (对于 native 应用程序,将跳过通过浏览器的间接访问)

    最佳答案

    我猜你是说 Windows。不同操作系统的答案或多或少是相同的,我将在此处指出特定于 Windows 的引用资料。

    它们并不像您认为的那样特别。它们是标准的键盘键,甚至 have constants in the Windows API (寻找 VK_MEDIA_VK_LAUNCH_VK_BROWSER_ 等)。

    键盘硬件向操作系统发送这些键的扫描码,就像普通键一样。

    程序可以使用带有 SetWindowsHookEx 的 Windows Hook 全局监听键盘事件。 (见 WH_KEYBOARD)。

    浏览器可能会也可能不会公开这些 key 。浏览器可以发送keydownkeyup具有原始扫描码的元素的事件,因此没有理由不能在网页中检测到它们。 Windows Hook 可能会过滤掉这些键,因此它们可能无法到达浏览器进程。您可以通过在“尝试!”中用光标按其中一个键来尝试它。场,在 this page .

    关于browser - 键盘上的播放/暂停按钮如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39627056/

    相关文章:

    javascript - 当用户从浏览器存储的表单下拉列表中进行选择时会触发哪些事件?

    javascript - Jquery UI - 在点击的div上动态绑定(bind)按键事件

    c# - 表单上所有控件的一个事件处理程序

    ios - 如何使用 native react 为 IOS 选择键盘类型

    javascript - 使用 Javascript 隐藏光标并使其停止移动

    php - 如何测试浏览器以查看它是否支持 128 位加密?

    c++ - 使用 Qt 检查键是否已关闭

    java - java中点击事件时如何检查按键是否按下

    c# - 使用 wpf 浏览器取消导航

    javascript - 如何防止最终用户看到通过浏览器控制台进行的网络调用