是否可以在 FireFox 插件中跟踪 keydown/keyup 事件?我想实现类似于以下场景的东西:
- 按住修改键后出现面板
- 在按住这些修改键的同时,按下其他键将导致面板执行某些操作
- 当修改键释放时,面板消失
是否可以在 FireFox 插件中跟踪 keydown/keyup 事件?我想实现类似于以下场景的东西:
为此,您需要在每个浏览器窗口中注册事件侦听器。高级 SDK API 不能让您直接访问浏览器窗口,但是您必须为此使用低级模块,特别是(当前未记录的)sdk/keyboard/observer
模块。它允许您在所有浏览器窗口中收听关键事件,所以这样的事情应该可以工作:
// Register key event handlers in each browser window
var {observer} = require("sdk/keyboard/observer");
observer.on("keydown", function(event) {
// Ignore events that have been handled elsewhere (e.g. by the web page)
if (event.defaultPrevented)
return;
if (...)
panel.show();
});
observer.on("keyup", function(event) {
// Ignore events that have been handled elsewhere (e.g. by the web page)
if (event.defaultPrevented)
return;
if (...)
panel.hide();
});
笔记:
sdk/keyboard/observer
模块完全没有文档,它可能随时更改或完全消失。WindowTracker
从sdk/window-utils
现在已弃用的模块中使用的。如果您真的想自己查看浏览器窗口,您现在可以使用(也未记录)sdk/windows/observer
允许监听open
和close
事件的模块。isBrowser()
现在可以通过sdk/window/utils
模块来区分浏览器窗口的功能。您还需要使用windows()
函数来考虑已经打开的窗口,Windows 观察者不会自动执行此操作。