当我按下一个键,任何键时,我希望执行某个功能。但是让它运行一次(按下它的那一刻)。我希望用“keydown”来做到这一点,但它的行为与“keypress”相同
addEvent(document, "keypress", function (e) {
console.log("keypress");
});
addEvent(document, "keydown", function (e) {
console.log("keydown");
});
addEvent(document, "keyup", function (e) {
console.log("keyup");
});
function addEvent(element, eventName, callback) {
if (element.addEventListener) {
element.addEventListener(eventName, callback, false);
} else if (element.attachEvent) {
element.attachEvent("on" + eventName, callback);
} else {
element["on" + eventName] = callback;
}
}
PS:有关 addEvent 函数的文档可在此 问题中找到
根据此文档:
如果您需要在按下某个键时关联一个事件,那么您应该使用onKeyDown(),因为这是在按下某个键时执行的事件,而不是在按下它时执行的事件。
你可以这样做:
onKeyUp()将在键“释放”时执行,即当用户停止按下它时。例如:
看看现在如果我们使用onKeyDown()会发生什么,在文本框中写一些东西:
根据你在评论中指出的(它只执行一次),我认为你可以使用这样的东西:
首先
keyPress
它不一样KeyDown
KeyPress = KeyDown + KeyUp
为了更好地理解它,让我们看看当用户不释放密钥时会发生什么
值得一提的是,keyPress的正确运行主要依赖于它旁边的toolkit widget,如果之前的代码不起作用,就做下面的修复
使用属性
KeyboardEvent.repeat
,这样你就会知道你是否按下同一个键太久: