我有一个网页,里面有一堆div元素。此页面在连接到非常慢的机顶盒的电视上运行。该框运行嵌入式Opera浏览器版本9.50。我唯一的输入设备是STB的遥控器,没有鼠标!在这个网页(在电视上),用户使用遥控器上的向上/向下/向左/向右键进行导航,从一个div到另一个div,因为没有鼠标。现在,当有人按下它们时,我正试图“去抖”这些按键!我可以控制按键事件,但是我没有任何运气来防止焦点事件,无论如何,无论我在按键处理程序中做什么,它们似乎都被解雇了。
问题是:如何防止焦点转到当前元素的keypress处理程序中的另一个元素?调用keypress event.preventDefault()并返回false(来自keypress处理程序)并不会阻止焦点转移到下一个元素。换句话说,事件“泡沫化”无论如何。我怎么能防止这种情况? 我也玩过改变tabIndex属性,但是没用。
任何想法。感谢。
答案 0 :(得分:1)
如果您想阻止点击事件的焦点,则必须e.preventDefault()
处理程序中的mousedown
。无法从click
处理程序执行此操作,因为它不是物理事件,它只是mousedown
和mouseup
的抽象
如果要阻止标签更改焦点,则必须从keydown处理程序中e.preventDefault()
。无法从keypress
执行,因为keypress
不是物理事件,它是keydown
和keyup
事件的抽象(请注意,当您按住时,按键会多次触发关键)。
$('#a').on('mousedown', function(e) {
e.preventDefault();
})
$('#a').on('keydown', function(e) {
if (e.keyCode == 9) {
e.preventDefault();
}
})