设置溢出:隐藏到body/html隐藏滚动条,但不会禁用Firefox中的滚动

Setting overflow:hidden to body/html hides scrollbars but does not disable scrolling in Firefox

本文关键字:隐藏 滚动 Firefox 溢出 body 滚动条 html 设置      更新时间:2023-09-26

我可以在Chrome/Safari中禁用滚动,但在body标签上隐藏溢出,但在Firefox上,这只隐藏滚动条,我仍然可以使用箭头键滚动。为什么会这样?

此外,我正在使用jQuery制作动画,以便向下滑动到页面上的特定区域。对于FF,我必须对html标签进行动画处理,但对于Chrome/Safari,它只是我需要动画处理的主体。还没有在IE中进行测试,但我预计这将是一个令人憎恶的问题:D。

那么,为什么我可以在Chrome上禁用机身滚动,而不能在FF上禁用呢?

注意:哦,我已经尝试过在FF的html标签上设置隐藏的溢出,但这只会让它跳到顶部(隐藏在主体上的溢出对两种浏览器都很好)。

您可以将主体的位置设置为"固定"

我能够在Firefox中通过在html元素上绑定keydown事件的jQuery侦听器并返回false来实现这一点。

// Disable Scrolling by keys
$("html").keydown(function(event) {
    switch(event.keyCode) {
        case 32://space
        case 33://pgup
        case 34://pgdn
        case 35://end
        case 36://home
        case 37://left
        case 38://up
        case 39://right
        case 40://down
            return false;
    }
});

我尝试了jQuery的event.preventDefault()event.stopImmediatePropogation(),但没有效果。

如果它滚动的唯一方式是使用箭头键,那么您可能只需在按键时返回false即可防止这种情况发生。

如果使用keydown功能,则使用键滚动文本区域不起作用。。。所以我已经完成了以下代码。修复了我的firefox卷轴问题。

$(window).scroll(function () { 
  window.scrollTo(0,0);
});