在用户脚本中覆盖Chrome键盘快捷方式

7
我编写了一个用户脚本(链接),可以在按下Ctrl+Shift+B后对文本区域中所选文本执行特定操作。
这是通过为文本区域注册keypress事件并检查按下的键来实现的。为了防止浏览器处理键组合,我使用preventDefault()方法,在Firefox中可以很好地工作(库窗口未被打开,而是执行我的代码)。
然而,在Chrome中,该键组合打开书签栏,甚至不会触发keypress事件。
我想知道是否有办法在Chrome中创建这样的快捷方式。它需要与用户脚本一起使用 - 真正的扩展程序不是一个选项,因为我不希望为Firefox和Chrome维护两个不同的“版本”。
1个回答

7

显然,Chrome浏览器的用户界面是基于keydown而不是keypress触发的(这篇Quirksmode文章或许可以解释为什么--当实际字符被插入时,keypress应该被触发)。

因此,将适当的行修改为:

$(document).on('keydown', '.wmd-input', function(e) {

看起来在Firefox和Chrome上都可以工作。


这会覆盖/禁用原始的键盘快捷键,还是两者都会触发? - Patrick
@Patrick,这要看情况。可以查阅 preventDefault()stopPropagation()stopImmediatePropagation() 等相关资料。 - Brock Adams

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接