此代码段在firefox中有效,但在chrome中不起作用,它不会滚动-触发click事件,但甚至不会移到其在anchor标签上的位置。

$(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();

});


})

最佳答案

scrollTop应该是set with an integer,请尝试不添加+ 'px'

例如,这将起作用:

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


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

您可以通过在控制台中键入document.body.scrollTop = 200;来进一步测试Vanilla JavaScript。如果那不能滚动您的页面,那么其他肯定是错误的。也许是Chrome扩展程序?

(此外,Firefox UA嗅探看起来很麻烦,但没人问我:))

关于javascript - scrollTop在Chrome中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38601888/

10-13 00:19