Javascript 事件的功能是e.which
什么?请举例说明。
Javascript 事件 e.which?
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
forkeydown
和keyup
events。
对于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 关键事件的文章
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。在此处阅读完整的 API 。
此功能已从 Web 标准中删除。虽然一些浏览器可能仍然支持它,但它正在被删除。不要在旧项目或新项目中使用它。使用它的页面或 Web 应用程序可能随时中断。
KeyboardEvent.key
如果可用,您应该改用它。
在活动期间,e
:
e.which
与:
e.keyCode
因此这两个函数都允许您获取在 keypress、keydown 或 keyup 事件期间按下的键的键码
许多人使用||
(OR) 来确保他们的代码在不支持哪个属性的浏览器中工作。看看下面的代码:
document.onkeypress = function(e) {
var key = e.which || e.keyCode;
alert(key);
}