JavaScript事件e.which?

javascript事件的function是什么? 请举例说明。

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

 document.onkeypress = function(myEvent) { // doesn't have to be "e" console.log(myEvent.which); }; 

使用该代码,控制台将打印出您在键盘上按下的任何键的代码。

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

对于与鼠标有关的事件, which指定了所涉及的鼠标button。 对于IE <9,等效值在window.event.buttonfind。 只是为了使事情复杂化,非IE浏览器也支持鼠标事件的button属性,有时会报告不同的值。 而且,浏览器有时对于相同的button或button的组合具有不同的值。 如果你坚持使用支持它的所有浏览器和IE <9中的button ,一个常数是值1总是意味着鼠标左键被包含(尽pipe不一定是单独的)。

 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鼠标事件的文章 。

对于与已按下的键相关的键相关事件。 对于keydownkeyup事件来说,这是比较简单的:它是按键的关键代码,并返回与事件的keyCode属性相同的值。 由于所有的浏览器都支持keyCode属性,而IE <9不支持which ,所以通常应该将keyCode用于keydownkeyup事件。

对于keypress事件,情况更复杂。 对于可打印的字符键, which是按下的键的字符代码,在比charCode属性更多的浏览器中受支持。 在IE <9中,等价物又是keyCode属性。 所以为了检测input的字符,下面是一个跨浏览器的方法。 请注意,下面的代码不应该用于不可打印的键,例如箭头键,您应该在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关于JavaScript关键事件的文章

该function已从Web标准中删除。 尽pipe一些浏览器可能仍然支持它,但它正在被丢弃。 不要在旧的或新的项目中使用它。 使用它的页面或Web应用程序可能会随时中断。

如果可用,您应该使用KeyboardEvent.key

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

在活动期间, e

 e.which 

是一样的:

 e.keyCode 

所以这两个函数都允许你获得在按键,按键或键盘事件中按下的键的键码

许多人使用|| (OR)来确保他们的代码在不支持哪个属性的浏览器中工作。 看下面的代码:

 document.onkeypress = function(e) { var key = e.which || e.keyCode; alert(key); }