一个Firefox OS应用程序能否检测到音量上键被按下?如果可以,怎么做?
(也许只是在
(也许只是在
document
上触发一个按键事件,我还没有尝试过)document
上触发一个按键事件,我还没有尝试过)Bug 989198 是公开 keydown/keyup 事件给应用程序的 bug。这个 wiki 页面 描述了这种新的 KeyboardEvent
分发机制。目前在 FFOS 手机v2.2 及更高版本中,只有 VolumeUp
和 VolumeDown
按键事件会被分派到应用程序中。
在 FFOS 2.2 及更高版本上,任何应用程序都可以监听音量增大和音量减小按钮的 keydown
或 keyup
事件。分派到处理程序的事件是常规的 KeyboardEvent
(与桌面浏览器中相同)。当用户按下音量减小或音量增大时,带有 .key
= VolumeDown
或 VolumeUp
的 KeyboardEvent 将被分派到所关注的应用程序中。如果您想防止系统应用程序处理它们(即将音量降低或提高),只需在您的键事件处理程序中简单地调用 event.preventDefault()
。
以下是一个 keydown
事件处理的示例:
var keyDownHandler = function(evt) {
if (evt.key === 'VolumeDown') {
// process logic of volume-down
} else if (evt.key === 'VolumeUp') {
// process logic of volume-up
}
evt.preventDefault(); // to stop system app from processing keydown event
};
window.addEventListener('keydown', keyDownHandler);