我使用了一个稍微被黑客攻击的Firemacs版本,这是一个基于XUL的“旧版”Firefox插件。要观察keypress
个事件,该插件会创建一个<overlay>
并提供一个使用以下内容的脚本:
window.addEventListener('keypress', handler, true);
然而,网站可能会“窃取”这些事件。例如,在SO的问题文本框中,我无法键入C-b,因为它与某些格式短接。同样,Facebook窃取了很多的键绑定,特别是C-y,我用它来从剪贴板粘贴。
问题:如何修改插件以便始终首先捕获按键事件?
额外:这个<overlay>
是如何被覆盖的?
答案 0 :(得分:1)
您需要使用keydown
和keyup
并阻止这些。按键是响应keydown
后跟keyup
。你会注意到它会引发第3次。因此,如果您阻止密钥在e.stopPropagation(); e.preventDefault
中与window.addEventListener('keydown', func, true);
一起传播,则应阻止它。