.keyCode与.which
我认为这将在堆栈溢出的地方回答,但我找不到它。
如果我正在监听按键事件,我是否应该使用.keyCode
或.keyCode
来确定Enter键是否被按下?
我一直都是这样做的:
$("#someid").keypress(function(e) { if (e.keyCode === 13) { e.preventDefault(); // do something } });
但是我看到使用.keyCode
代替.keyCode
。 有什么不同? 跨浏览器比另一个更友好吗?
有些浏览器使用keyCode
,其他使用which
。 如果你使用jQuery,你可以可靠地使用jQuery来标准化事物 。 更多在这里。
如果你不使用jQuery,你可以这样做:
var key = 'which' in e ? e.which : e.keyCode;
或者交替地:
var key = e.which || e.keyCode || 0;
…处理e.which
可能为0
的可能性(通过使用JavaScript的好奇的||
运算符 ,最后恢复0
)。
jQuery根据event.which
, event.keyCode
或event.which
是否被浏览器支持来event.which
。
// Add which for key events if ( event.which == null && (event.charCode != null || event.keyCode != null) ) { event.which = event.charCode != null ? event.charCode : event.keyCode; }
jQuery的另外一个好处就是它也可以用来点击鼠标:
// Add which for click: 1 === left; 2 === middle; 3 === right // Note: button is not normalized, so don't use it if ( !event.which && event.button !== undefined ) { event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) )); }
看看这个: https : //developer.mozilla.org/en-US/docs/Web/API/event.keyCode
在按键事件中,按下的键的Unicode值存储在keyCode或charCode属性中,而不是两者。 如果按下的按键产生一个字符(例如'a'),charCode被设置为该字符的代码,尊重字母大小写。 (即charCode考虑shift键是否被按下)。 否则,被按下的键的代码被存储在keyCode中。 keyCode总是在keydown和keyup事件中设置。 在这些情况下,charCode从不设置。 要获取密钥的代码,无论是存储在keyCode还是charCode中,都要查询哪个属性。 通过IMEinput的字符不通过keyCode或charCode注册。
如果你留在香草JavaScript,请注意keyCode现已被弃用,将被删除:
该function已从Web标准中删除。 尽pipe一些浏览器可能仍然支持它,但它正在被丢弃。 避免使用它并尽可能更新现有的代码; 请参阅本页面底部的兼容性表格来指导您的决定。 请注意,此function可能会在任何时候停止工作
https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode
而是使用: .key或.code,取决于你想要的行为: https : //developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code https://developer.mozilla.org/en -US /文档/networking/ API /的KeyboardEvent /关键
两者都在现代浏览器上实现。
用于捕获键盘input和组合键的健壮的Javascript库。 它没有依赖关系。
http://jaywcjlove.github.io/hotkeys/
hotkeys('ctrl+a,ctrl+b,r,f', function(event,handler){ switch(handler.key){ case "ctrl+a":alert('you pressed ctrl+a!');break; case "ctrl+b":alert('you pressed ctrl+b!');break; case "r":alert('you pressed r!');break; case "f":alert('you pressed f!');break; } });
hotkeys理解以下修饰符: ⇧
, shift
, option
, ⌥
, alt
, ctrl
, control
, command
和⌘
。
下列特殊键可用于快捷键: backspace
, tab
, clear
pageup
, pagedown
pageup
, pagedown
pageup
, pagedown
pageup
, pagedown
pageup
,上, pageup
, left
, right
pageup
, pagedown
pageup
, delete
pageup
, delete
pageup
, f1
到f19
。