Firefox 中持续的 onkeydown 事件

发布于 2024-09-09 17:33:49 字数 196 浏览 8 评论 0原文

我有一个常规的 onkeydown 事件处理程序,它会触发一个函数,如下所示:

window.onkeydown = onKeyDown;

它基本上可以工作,但它只捕获 Firefox 中的 1 个键。然后我必须松开它并再次按下。

谷歌浏览器为我提供了持续的抓取,所以我想知道这是否是我的选择。

I have a regular onkeydown event handler that fires a function, like this:

window.onkeydown = onKeyDown;

It essentially works, but it only captures 1 key in Firefox. Then I have to release it and press again.

Google chrome offers me a continuous grab, so I wonder if this is by choice.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

陌路终见情 2024-09-16 17:33:49

如果你尝试这样的事情会怎样:

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;

What if you try something like this:

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;

Made better:

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;
等待我真够勒 2024-09-16 17:33:49

您尝试过 keypress 事件吗?如果按住该键,则在 keydown 之后触发 keypress 事件。

Have you tried the keypress event? The keypress event is fired after keydown if the key is held down.

阳光的暖冬 2024-09-16 17:33:49

我猜您一定使用的是 Mac 或 Linux,因为在 Windows 中,Firefox 确实支持自动重复 keydown 事件。然而,在其他操作系统中,只有按住某个键时,您才会收到自动重复的按键事件。总之,如果可以的话,请使用 keypress 事件。

有关详细信息,请参阅 Jan Wolter 关于 JavaScript 关键事件的优秀文章

I guess you must be using a Mac or Linux, because in Windows, Firefox does support auto-repeated keydown events. In other operating systems, however, you only get auto-repeated keypress events when you hold a key down. In summary, if you can, use the keypress event.

See Jan Wolter's excellent article on JavaScript key events for more information.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文