Javascript Firefox中的连续onkeydown事件
我有一个触发函数的常规onkeydown事件处理程序,如下所示:Javascript Firefox中的连续onkeydown事件,javascript,firefox,events,onkeydown,Javascript,Firefox,Events,Onkeydown,我有一个触发函数的常规onkeydown事件处理程序,如下所示: window.onkeydown = onKeyDown; var iskeydown = 0; var samplecount = 0; function onKeyDown() { iskeydown = 1; while (iskeydown) continuous(); } function onKeyUp() { iskeydown = 0; alert(samplecount);
window.onkeydown = onKeyDown;
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;
它基本上可以工作,但在Firefox中只捕获1个键。然后我必须释放它并再次按下
Google chrome为我提供了一个连续抓取功能,所以我想知道这是否是出于选择。您是否尝试过
按键事件?如果按住键,则在按下键后会触发keypress
事件。您是否尝试过keypress
事件?如果按住键,则会在按下键后触发keypress
事件。
window.onkeydown = onKeyDown;
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;
如果您尝试这样的方法会怎么样:
window.onkeydown = onKeyDown;
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;
我猜您一定是在使用Mac或Linux,因为在Windows中,Firefox确实支持自动重复的keydown
事件。但是,在其他操作系统中,只有在按住键时,才会自动重复出现keypress
事件。总之,如果可以,请使用按键
事件
有关更多信息,请参阅。我猜您一定在使用Mac或Linux,因为在Windows中,Firefox确实支持自动重复的按键事件。但是,在其他操作系统中,只有在按住键时,才会自动重复出现keypress
事件。总之,如果可以,请使用按键
事件
有关更多信息,请参阅。您的问题到底是什么?您的问题到底是什么?这似乎不是一个好主意:它会给JavaScript运行时带来不必要的压力,可能会产生“此脚本需要很长时间”的问题警告,可能会阻止浏览器处理新的关键事件。这似乎不是一个好主意:它会给JavaScript运行时带来不必要的压力,可能会产生“此脚本需要很长时间”警告,并可能会阻止浏览器处理新的关键事件。