首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Javascript event e.which?

Javascript event e.which?
EN

Stack Overflow用户
提问于 2010-06-16 13:50:39
回答 4查看 102K关注 0票数 73

Javascript event e.which的功能是什么?请举例说明。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-06-16 13:57:15

e.which不是一个事件,whichevent对象的一个属性,大多数人在他们的事件处理程序中将其标记为e。它包含为触发事件而按下的键的键代码(例如: keydown,keyup)。

代码语言:javascript
复制
document.onkeypress = function(myEvent) { // doesn't have to be "e"
    console.log(myEvent.which);
};

有了这个代码,控制台将打印出您在键盘上按下的任何键的代码。

弃用通知(截至2020年9月)

KeyboardEvent.which已被弃用。请寻找替代方案,例如KeyboardEvent.key。请阅读完整的here接口。

票数 69
EN

Stack Overflow用户

发布于 2010-06-16 16:44:05

whichEvent对象的属性。在大多数浏览器中,它是为与键相关的事件和与鼠标相关的事件定义的,但在IE (版本9之前)中这两种情况下都没有定义。

对于与鼠标相关的事件,which指定所涉及的鼠标按钮。对于IE < 9,可以在window.event.button中找到等效值。更复杂的是,非IE浏览器还支持鼠标事件的button属性,该属性有时会报告与which不同的值。此外,浏览器有时对同一按钮或按钮组合有不同的值。如果您坚持在所有支持它的浏览器中使用which,并且在IE < 9中使用button,那么唯一的常量就是值1总是意味着涉及到鼠标左键(尽管不一定是单独的)。

代码语言:javascript
复制
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与已按下的键相关。对于keydownkeyup事件,这相对简单:它是按下的键的键代码,并返回与事件的keyCode属性相同的值。由于所有浏览器都支持keyCode属性,而IE <9不支持which,因此通常应对keydownkeyup事件使用keyCode

对于keypress事件,情况更为复杂。对于可打印的字符键,which是按下的键的字符代码,并且比charCode属性更受浏览器支持。在IE <9中,等价物同样是keyCode属性。因此,为了检测键入的字符,下面是一种跨浏览器的方法。请注意,下面的代码不应用于不可打印的键,而应在keydown事件中检测到:

代码语言:javascript
复制
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

票数 82
EN

Stack Overflow用户

发布于 2016-09-07 21:23:25

此功能已从Web标准中删除。尽管一些浏览器可能仍然支持它,但它正在被删除。不要在旧项目或新项目中使用它。使用它的页面或Web应用程序随时可能崩溃。

您应该使用KeyboardEvent.key,如果它可用的话。

http://codepen.io/KevinOrfas/pen/QKbKAd

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3050984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档