我有一个项目,其中箭头键可以用作输入方法,在大多数浏览器中只使用.preventDefault()
完美地工作,但Firefox(Win8和OSX上的v37)似乎仍然移动浏览器窗口(如果屏幕可滚动区域可用)
$(document).keyup(function (evt) {
if (evt.keyCode == 39 || evt.keyCode == 40) { // Right arrow, Down arrow
evt.preventDefault();
// Actual code
} else {
if (evt.keyCode == 37 || evt.keyCode == 38) { // Left arrow, Up arrow
evt.preventDefault();
// Actual code
}
}
})
我已经看到了有关使用charCode
的一些事情,但是我的代码确实在运行,因此.preventDefault()
肯定会受到攻击。
据我所知,没有理由这会移动窗口位置。
我做错了吗?或者如果没有,是否有另一种方法可以禁用由于箭头键移动的窗口?
答案 0 :(得分:2)
你必须听keydown
事件而不是keyup
因为前者总是发生在后者之前。这意味着浏览器可能会在发生 keydown
事件之前回复keyup
事件。在这种情况下,您无法再从keyup
侦听器取消浏览器的响应操作(即滚动)。