Javascript 事件 e.which的功能是什么。
e.which
e.which不是事件,which是 event对象的属性,大多数人在他们的事件处理程序中将其标记为 e。它包含按下触发事件的键的密钥代码(例如: keydown,keyup)。
which
event
e
document.onkeypress = function(myEvent) { // doesn't have to be "e" console.log(myEvent.which); };
有了这些代码,控制台将打印出你在键盘上按下的任何键的代码。
KeyboardEvent.which 已被弃用。请寻找替代方案,如 键盘事件,键。阅读完整的 API 给你。
which是 Event对象的属性。它是为大多数浏览器中的键相关和鼠标相关事件定义的,但是在这两种情况下 IE (版本9之前)都没有定义。
Event
对于与鼠标相关的事件,which指定所涉及的鼠标按钮。对于 IE < 9,在 window.event.button中找到等效值。更复杂的是,非 IE 浏览器还支持鼠标事件的 button属性,该属性有时会报告与 which不同的值。此外,浏览器有时对同一个按钮或按钮组合有不同的值。如果您坚持在所有支持 which的浏览器中使用 which,在 IE < 9中使用 button,那么一个常量是值1总是意味着涉及到鼠标左键(尽管不一定单独使用)。
window.event.button
button
document.onmousedown = function(e) { e = e || window.event; var button = (typeof e.which != "undefined") ? e.which : e.button; if (button == 1) { alert("Left mouse button down"); } };
对于一个完整的分析,我推荐 Jan Wolter 关于 JavaScript 鼠标事件的文章。
对于与键相关的事件,which与按下的键相关。对于 keydown和 keyup事件,这相对简单: 它是按下的键的键代码,并返回与事件的 keyCode属性相同的值。由于所有浏览器都支持 keyCode属性,而 IE < 9不支持 which,因此通常应该对 keydown和 keyup事件使用 keyCode。
keydown
keyup
keyCode
对于 keypress事件,情况更为复杂。对于可打印的字符键,which是按下的键的字符代码,并且在比 charCode属性更多的浏览器中受支持。在 IE < 9中,同样等价的是 keyCode属性。因此,为了检测类型化的字符,下面是一种跨浏览器的方法。请注意,下面的代码不应该用于非打印键,如箭头键,而是应该在 keydown事件中检测:
keypress
charCode
document.onkeypress = function(e) { e = e || window.event; var charCode = (typeof e.which == "number") ? e.which : e.keyCode; if (charCode) { alert("Character typed: " + String.fromCharCode(charCode)); } };
同样,对于更多的细节,我推荐 Jan Wolter 关于 JavaScript 关键事件的文章
此特性已从 Web 标准中删除。虽然一些浏览器可能仍然支持它,但它正在被放弃的过程中。不要在旧的或新的项目中使用它。使用它的页面或 Web 应用程序可能随时中断。
如果可用的话,应该使用 KeyboardEvent.key。
KeyboardEvent.key
Http://codepen.io/kevinorfas/pen/qkbkad
在活动期间,e:
等同于:
e.keyCode
因此,这两个函数都允许您获取在按键、按下键或按上键事件期间按下的键的键码
许多人使用 ||(OR)来确保他们的代码在不支持哪个属性的浏览器中工作。看看下面的代码:
||
document.onkeypress = function(e) { var key = e.which || e.keyCode; alert(key); }