gpt4 book ai didi

javascript - jQuery 按键事件在按住键时重复触发 - 但不是在所有键上

转载 作者:数据小太阳 更新时间:2023-10-29 04:42:56 29 4
gpt4 key购买 nike

这可能是预期的行为,或者至少不是 jQuery/js 问题,但如果有任何问题,我想澄清一下。

采取以下措施:

$(document).bind('keypress', function(e){
switch(e.keyCode)
{
case 37:
console.log('left cursor keydown, will fire on hold');
break;
case 39:
console.log('right cursor keydown, will fire on hold');
break;
case 80:
console.log('p will only fire once per press!');
break;
}
});

您还可以使用 jQuery 文档中的示例:http://api.jquery.com/keypress/

当按下左光标或右光标(或许多其他键,例如 A、E、[、 等)时,事件将触发,您会在控制台中收到一条不错的日志消息。一切都很好,符合预期。但是,现在尝试按住该键 - 在短暂的暂停后,您会看到当您按住该键时 keydown 事件会触发多次,但是如果您尝试按下 p(或者,例如, j), 它只会触发一次。

我正在使用 FF 9.0.1 和 mac OSX 10.7.1 以及 jQuery 1.7.1 对此进行测试。

这是设计使然,它是依赖于浏览器的功能,还是与操作系统有关,甚至与键盘本身有关?还有人有一份会重复的键和不会重复的键的列表吗?

就用例而言,并没有真正的用例 - 这只是在我将动画绑定(bind)到光标按下时突然出现,并在按下键时开始看到奇怪的行为。我的解决方法是改用 keyup() 事件,并在 keydown() 事件上使用 preventDefault() 我感兴趣的键, 停止光标滚动屏幕。

更新:似乎在按键事件中,大多数字母的 keyCode 总是 0,这可能与我认为处理程序只触发一次的原因有关。经过更多测试后,我看到重复的日志条目,例如游标。如果您查看 jQuery API 页面,并使用该页面上的演示,它会显示出我描述的行为:http://api.jquery.com/keypress/

我自己还是无法解释:/

最佳答案

行为因浏览器和操作系统而异。以下页面在 2.2 节中详细介绍了自动重复按键事件的主题:

http://unixpapa.com/js/key.html

关于javascript - jQuery 按键事件在按住键时重复触发 - 但不是在所有键上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9098168/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com