Javascript事件的功能是e.which
什么?请举例说明。
Javascript事件的功能是e.which
什么?请举例说明。
Answers:
e.which
不是事件,which
是event
对象的属性,大多数人e
在其事件处理程序中将其标记为对象。它包含按下该键以触发事件的键的键控代码(例如:keydown,keyup)。
document.onkeypress = function(myEvent) { // doesn't have to be "e"
console.log(myEvent.which);
};
使用该代码,控制台将打印出您在键盘上按下的任何键的代码。
不推荐使用KeyboardEvent .。请寻找替代方法,例如KeyboardEvent.key。在此处阅读完整的API 。
which
在鼠标事件上也存在,并且您的示例在IE上不起作用,在IE中,事件处理程序不接收事件参数。
which
是的财产 Event
对象。在大多数浏览器中,它是为与键有关和与鼠标有关的事件定义的,但是在这两种情况下,都未在IE(版本9之前)中定义。
对于与鼠标有关的事件,请which
指定所涉及的鼠标按钮。对于IE <9,在中找到等效值window.event.button
。只是使事情复杂化,非IE浏览器还支持button
鼠标事件的属性,该属性有时会报告与不同的值which
。同样,浏览器有时对于同一按钮或按钮组合具有不同的值。如果您坚持which
在所有支持该功能的浏览器中以及button
在IE <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撰写有关JavaScript鼠标事件的文章。
对于与键有关的事件,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));
}
};
同样,有关更多详细信息,我建议Jan Wolter撰写有关JavaScript键事件的文章
此功能已从Web标准中删除。尽管某些浏览器可能仍支持它,但是它正在被删除。不要在新旧项目中使用它。使用它的页面或Web应用程序可能随时中断。
你应该用 KeyboardEvent.key
如果可用,改为使用。
KeyboardEvent.key
将返回“键的标识符(字符)”,而KeyboardEvent.which
将返回“数字keyCode”。
活动期间e
:
e.which
与:
e.keyCode
因此,这两个功能都允许您获取在按键,击键或击键事件期间按下的键的键码。
许多人使用||
(OR)来确保其代码在不支持该属性的浏览器中正常工作。看下面的代码:
document.onkeypress = function(e) {
var key = e.which || e.keyCode;
alert(key);
}