禁用Firefox

时间:2015-05-13 15:51:44

标签: javascript jquery firefox preventdefault

我有一个项目,其中箭头键可以用作输入方法,在大多数浏览器中只使用.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()肯定会受到攻击。

据我所知,没有理由这会移动窗口位置。

我做错了吗?或者如果没有,是否有另一种方法可以禁用由于箭头键移动的窗口?

1 个答案:

答案 0 :(得分:2)

你必须听keydown事件而不是keyup因为前者总是发生在后者之前。这意味着浏览器可能会在发生 keydown事件之前回复keyup事件。在这种情况下,您无法再从keyup侦听器取消浏览器的响应操作(即滚动)。