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

标签 javascript scroll arrow-keys

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

document.body.style.overflow = "hidden";

停止页面滚动。因此,当我点击“主题 2”时,我可以继续使用箭头键转到下一个主题/项目。之后,如果我点击屏幕上的其他任何地方,我会将溢出设置回自动,页面可以再次滚动。

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

最佳答案

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

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

您可以轻松地将其扩展为仅在您的菜单处于事件状态时才起作用,但如果没有看到其中的一些代码,就不可能给您举个例子。

关于javascript - 如何使用箭头键禁用 FF 中的页面滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2020414/

相关文章:

java - 当显示的列表需要滚动时,按钮从 DialogFragment 中消失

ios - 在 iOS 应用程序中,如何检测用户按下了其外部键盘上的箭头键之一?

c++ - 在 Windows 上显示向上/向下箭头 C++

javascript - 谷歌地图数组中的动画 gif

javascript - 如何启用其他元素后面的元素的单击

javascript - 如何创建浏览器扩展以在 Firefox 和 Google Chrome 中显示类似信息栏的 HTML 表单横幅?

javascript - 为什么我的类型在 React 和 TypeScript 中为 null?

android - 当我们像 vine 和 instagram 一样滚动时如何播放视频?

html - 窗口调整大小的简单滚动条问题

python - Putty 中的箭头键返回 ^[[A ^[[D ^[[B] 而不是移动光标