Javascript event e.which
的功能是什么?请举例说明。
发布于 2010-06-16 13:57:15
e.which
不是一个事件,which
是event
对象的一个属性,大多数人在他们的事件处理程序中将其标记为e
。它包含为触发事件而按下的键的键代码(例如: keydown,keyup)。
document.onkeypress = function(myEvent) { // doesn't have to be "e"
console.log(myEvent.which);
};
有了这个代码,控制台将打印出您在键盘上按下的任何键的代码。
弃用通知(截至2020年9月)
KeyboardEvent.which已被弃用。请寻找替代方案,例如KeyboardEvent.key。请阅读完整的here接口。
发布于 2010-06-16 16:44:05
which
是Event
对象的属性。在大多数浏览器中,它是为与键相关的事件和与鼠标相关的事件定义的,但在IE (版本9之前)中这两种情况下都没有定义。
对于与鼠标相关的事件,which
指定所涉及的鼠标按钮。对于IE < 9,可以在window.event.button
中找到等效值。更复杂的是,非IE浏览器还支持鼠标事件的button
属性,该属性有时会报告与which
不同的值。此外,浏览器有时对同一按钮或按钮组合有不同的值。如果您坚持在所有支持它的浏览器中使用which
,并且在IE < 9中使用button
,那么唯一的常量就是值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
,因此通常应对keydown
和keyup
事件使用keyCode
。
对于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));
}
};
同样,有关更多详细信息,我推荐使用Jan Wolter's article on JavaScript key events
发布于 2016-09-07 21:23:25
此功能已从Web标准中删除。尽管一些浏览器可能仍然支持它,但它正在被删除。不要在旧项目或新项目中使用它。使用它的页面或Web应用程序随时可能崩溃。
您应该使用KeyboardEvent.key
,如果它可用的话。
https://stackoverflow.com/questions/3050984
复制相似问题