JavaScript事件e.which?
javascript事件的function是什么? 请举例说明。
这不是一个事件, which
是event
对象的属性,大多数人在事件处理程序中标记为e
。 它包含被按下以触发事件的键的关键代码(例如:keydown,keyup)。
document.onkeypress = function(myEvent) { // doesn't have to be "e" console.log(myEvent.which); };
使用该代码,控制台将打印出您在键盘上按下的任何键的代码。
which
是Event
对象的一个属性。 它被定义为在大多数浏览器中与键相关和鼠标相关的事件,但是在两种情况下都没有在IE中定义(在版本9之前)。
对于与鼠标有关的事件, which
指定了所涉及的鼠标button。 对于IE <9,等效值在window.event.button
find。 只是为了使事情复杂化,非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鼠标事件的文章 。
对于与已按下的键相关的键相关事件。 对于keydown
和keyup
事件来说,这是比较简单的:它是按键的关键代码,并返回与事件的keyCode
属性相同的值。 由于所有的浏览器都支持keyCode
属性,而IE <9不支持which
,所以通常应该将keyCode
用于keydown
和keyup
事件。
对于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
。
在活动期间, e
:
e.which
是一样的:
e.keyCode
所以这两个函数都允许你获得在按键,按键或键盘事件中按下的键的键码
许多人使用||
(OR)来确保他们的代码在不支持哪个属性的浏览器中工作。 看下面的代码:
document.onkeypress = function(e) { var key = e.which || e.keyCode; alert(key); }