如何使用箭头键禁用FF中的页面滚动

Cha*_*dar 3 javascript scroll arrow-keys

我正在构建一个包含主题和项目的菜单.可以通过单击来扩展和折叠每个主题.我的任务是使用向上和向下箭头键移动菜单主题和项目.我已经这样做了,但问题是当页面大于窗口时,按下箭头键时页面会滚动.我尝试过使用:

document.body.style.overflow = "hidden";
Run Code Online (Sandbox Code Playgroud)

阻止页面滚动.因此,当我单击"Topic2"时,我可以继续使用箭头键转到下一个主题/项目.之后,如果我点击屏幕上的任何其他位置,我将溢出设置回自动,页面可以再次滚动.

这适用于IE,但不适用于FF.在FF中,滚动条被移除,鼠标滚轮不滚动页面,但箭头键仍然是DO.所以我的问题是如何解决这个问题,或者更好的是,当焦点在任何菜单元素上时如何不滚动页面?因此我不会使用overflow属性.

Tat*_*nen 12

您必须将keydown事件绑定到文档,如果事件键代码与任何箭头键(37到40)匹配,则返回false.这样箭头按下就不会再进一步​​了.

document.onkeydown = function(e) {
    var k = e.keyCode;
    if(k >= 37 && k <= 40) {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

你可以轻松地扩展它,只有当你的菜单处于活动状态时才能工作,但是如果没有看到它的某些代码,就不可能给你一个例子.