我以为可以在Stack Overflow的某处得到答案,但是我找不到它。
如果我正在监听按键事件,是否应该使用.keyCode或.which确定是否按下Enter键?
.keyCode
.which
我一直都做以下事情:
$("#someid").keypress(function(e) { if (e.keyCode === 13) { e.preventDefault(); // do something } });
但是我看到的示例使用.which而不是.keyCode。有什么不同?一个跨浏览器比另一个更友好吗?
注:下面的答案写于2010年在这里很多年以后,无论是keyCode和which赞成不赞成使用key(对于逻辑密钥)和code(对于关键的物理位置)。但是请注意,IE不支持code,并且它对key规范的支持是基于较早版本的规范,因此不太正确。在我撰写本文时,当前基于EdgeHTML和Chakra的Edge均不支持code,但Microsoft正在为其Edge推出基于Blink和V8的替代产品,据推测可以/将会这样做。
keyCode
which
key
EdgeHTML
Chakra
Edge
code
有些浏览器使用keyCode,有些使用which。
如果你使用的是jQuery,则可以可靠地使用whichjQuery 标准化事物;这里更多。
如果你不使用jQuery,则可以执行以下操作:
var key = 'which' in e ? e.which : e.keyCode;
或者:
var key = e.which || e.keyCode || 0;
......它处理的可能性,e.which可能是0(通过恢复0到了最后,使用JavaScript的好奇,强大的||运营商)。