scrollTop无法使用chrome

时间:2016-07-27 00:25:22

标签: javascript jquery

这段代码在firefox中运行,但在chrome中却不会滚动 - click事件会触发,但甚至不会转到它在锚标记上的位置。

$(function() {
$(".menu li a").click(function(e) {
    var value = $(this).attr('href');
    var id = value.substr(1, $(this).attr('href').length);              
    var px = navigator.userAgent.toLowerCase().indexOf('firefox') > -1 ? 16 : 1;
    var target = $("a[name=" + id + "]").offset().top + px;

    console.log( $("a[name=" + id + "]"));

    $('html, body').stop().animate({
        scrollTop: target + 'px'
    }, 'slow');

    e.preventDefault();

});

})

1 个答案:

答案 0 :(得分:1)

scrollTop应为set with an integer,请勿尝试添加+ 'px'

例如,这将起作用:

$('html, body').stop().animate({scrollTop: 100}, 'slow');

如果它不适合您,则页面上的其他内容会阻止滚动,或者您的body / html的滚动高度不会超过浏览器窗口。

您可以通过在控制台中输入document.body.scrollTop = 200;来进一步使用vanilla JavaScript进行测试。如果 没有滚动你的页面,那么别的东西肯定是错的。也许是Chrome扩展程序?

(另外firefox UA嗅探看起来很麻烦,但没有人问我:))