ScrollTop js - Firefox 不工作

ScrollTop js - Firefox doesn't work

我的 scrollTop javascript 代码有问题,仅适用于 firefox。我在 href 链接上放置了一些锚点,只有在 chrome/explorer 上才能实现平滑滚动。在 Firefox 上没有。它仅在该按钮上跳转,但不会滚动到该按钮。

Firefox 控制台错误:该站点似乎使用了滚动链接定位效果。这可能不适用于异步平移;请参阅 https://developer.mozilla.org/docs/Mozilla/Performance/ScrollLinkedEffects 了解更多详情并加入有关相关工具和功能的讨论!

我的代码:

if (navigator.userAgent.toLowerCase().indexOf('firefox') > -1) {
    $scrollWrapper = $(document);

    scroll = function scroll(value, hash) {
        $scrollWrapper.scrollTop(value);
        currentHash = hash;
    };
} else {
    $scrollWrapper = $('html, body');

    scroll = function scroll(value, hash) {
        $(document).off('scroll.currentHash');

        $scrollWrapper.animate({
            scrollTop: value + 30
        }, {
            delay: 500,
            complete: function () {
                currentHash = hash;
            }
        });
    };
}

Firefox 将溢出置于 html 级别,除非专门设计为不同的行为。

要使其在 Firefox 中运行,请使用

$('body,html').animate( ... );

工作示例 http://jsfiddle.net/4etct/ CSS 解决方案是设置以下样式:

html { overflow: hidden; height: 100%; }
body { overflow: auto; height: 100%; }

我认为 JS 解决方案的侵入性最小。