javascript事件e.which的功能是什么?请举例说明。
答案 0 :(得分:75)
which
是Event
个对象的属性。它在大多数浏览器中针对与键相关且与鼠标相关的事件进行了定义,但在两种情况下都没有在IE中定义(在版本9之前)。
对于与鼠标相关的事件,which
指定所涉及的鼠标按钮。对于IE<在图9中,等价值在window.event.button
中找到。只是为了使事情变得复杂,非IE浏览器还支持鼠标事件的button
属性,有时会报告与which
不同的值。此外,浏览器有时对同一按钮或按钮组合具有不同的值。如果您坚持在支持它的所有浏览器中使用which
并在IE中使用button
< 9,一个常量是值1总是表示涉及鼠标左键(虽然不一定是单独的)。
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's article on JavaScript mouse events。
对于与键相关的事件,which
与已按下的键相关。对于keydown
和keyup
事件,这是相对简单的:它是按下的键的关键代码,并返回与事件的keyCode
属性相同的值。由于所有浏览器都支持keyCode
属性和IE< 9不支持which
,您通常应该keyCode
用于keydown
和keyup
个事件。
对于keypress
事件,情况更复杂。对于可打印字符键,which
是按下的键的字符代码,并且在charCode
属性以外的浏览器中受支持。在IE< 9等价物再次是keyCode
属性。因此,为了检测键入的字符,以下是跨浏览器方法。请注意,下面的代码不应用于不可打印的键,例如箭头键,您应该在keydown
事件中检测到这些键:
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));
}
};
答案 1 :(得分:62)
e.which
不是一个事件,which
是event
对象的一个属性,大多数人在其事件处理程序中将其标记为e
。它包含按下以触发事件的键的键代码(例如:keydown,keyup)。
document.onkeypress = function(myEvent) { // doesn't have to be "e"
console.log(myEvent.which);
};
使用该代码,控制台将打印出您在键盘上按下的任何键的代码。
答案 2 :(得分:6)
此功能已从Web标准中删除。虽然有些浏览器可能仍然支持它,但它正在被删除。不要在旧项目或新项目中使用它。使用它的页面或Web应用程序可能随时中断。
如果可以,请使用KeyboardEvent.key
。
答案 3 :(得分:3)
在活动期间,e
:
e.which
与:
相同e.keyCode
因此,这两个函数都允许您获取在按键,键控或键盘事件期间按下的键的键码
许多人使用||
(或者)来确保他们的代码在不支持哪个属性的浏览器中运行。请看下面的代码:
document.onkeypress = function(e) {
var key = e.which || e.keyCode;
alert(key);
}