2015-05-13 45 views
1

我有一个方向键可以用作输入方法,在大多数浏览器中只使用.preventDefault()完美地工作,但Firefox(在Win8和OSX上的v37)似乎仍然移动浏览器窗口(如果有可用的关闭屏幕滚动能区)禁用在Firefox中滚动的箭头键页面

$(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()也在跃跃欲试地被击中。

据我所知,没有理由应该移动窗口的位置。

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

+2

我认为你必须倾听'keydown'事件而不是'keyup'因为前者总是发生在后者之前 – hindmost

+0

它总是你不会注意到的小事情不是它,不知道我是如何错过的!如果你想添加作为答案,我会高兴地接受它:) – DBS

回答

2

您必须听​​事件而不是keyup导致前者总是发生在后者之前。这意味着浏览器可能会响应​​事件之前keyup事件发生。在这种情况下,您无法从keyup监听器中取消浏览器的响应操作(即滚动)。