【发布时间】:2015-12-31 07:21:25
【问题描述】:
我环顾四周,我知道您可以检测到 ctrl 键(ctrl+c、ctrl+v 等)与 javascript 中的 keydown 事件,它经常被使用,因此该事件不会被其他进程捕获但是我想通过 keypress 事件来处理它(目的是通过一个事件而不是 2 个事件进行处理,并希望在为同一功能使用其他键盘快捷键时允许一致性)现在似乎应该可以在所有按键事件对象具有 alt 的布尔属性之后,ctrl、shift 等以及确实通过的按键事件的字符代码与按键本身不同(例如 z 按键事件是 charCode 122 其中 ctrl +z 按键事件是 charCode 26)。那么问题来了,有没有办法阻止默认拦截ctrl键,让keypress事件可以处理呢?
对于我的特定实例,我使用的是 chrome,但我也想要一般的答案。
更新
我发现所有默认的 ctrl 键都可以通过这样的 keydown 事件来防止(例如 ctrl+s 尝试保存页面)
$('element').keydown(function(event){
if(event.ctrlKey){
event.preventDefault();
}
});
(注意:这只会阻止可预防的默认设置,例如无法阻止 chrome 中新标签的 ctrl+t)
但是这里的问题是这也阻止了 keypress 事件的发生是否有办法以具有 keypress 属性的方式将事件传递给 keypress 事件(这意味着现在将定义 charCode 之类的东西)
【问题讨论】:
标签: javascript events keypress ctrl