我有一个触发函数的常规 onkeydown 事件处理程序,如下所示:
window.onkeydown = onKeyDown;
它基本上可以工作,但它只捕获 Firefox 中的 1 个键。然后我必须释放它并再次按下。
谷歌浏览器为我提供了一个持续的抓取,所以我想知道这是否是我的选择。
我有一个触发函数的常规 onkeydown 事件处理程序,如下所示:
window.onkeydown = onKeyDown;
它基本上可以工作,但它只捕获 Firefox 中的 1 个键。然后我必须释放它并再次按下。
谷歌浏览器为我提供了一个持续的抓取,所以我想知道这是否是我的选择。
如果你尝试这样的事情怎么办:
var iskeydown = 0;
var samplecount = 0;
function onKeyDown() {
iskeydown = 1;
while (iskeydown) continuous();
}
function onKeyUp() {
iskeydown = 0;
alert(samplecount);
}
function continuous() {
samplecount = samplecount + 1;
}
window.onkeydown = onKeyDown;
window.onkeyup = onKeyUp;
变得更好:
var iskeydown = 0;
var samplecount = 0;
function onKeyDown() {
iskeydown = 1;
continuous();
}
function onKeyUp() {
iskeydown = 0;
alert(samplecount);
}
function continuous() {
if (iskeydown == 1) {
samplecount = samplecount + 1;
setTimeout("continuous()",200);
}
}
window.onkeydown = onKeyDown;
window.onkeyup = onKeyUp;
你试过这个keypress
活动吗?如果按键被按住,keypress
事件会在之后触发。keydown
我猜你一定是在使用 Mac 或 Linux,因为在 Windows 中,Firefox 确实支持自动重复keydown
事件。然而,在其他操作系统中,您只有keypress
在按住某个键时才会收到自动重复的事件。总之,如果可以,请使用keypress
事件。
有关更多信息,请参阅Jan Wolter 关于 JavaScript 关键事件的优秀文章。