Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery scrollTo可以在Chrome中工作,但不能在FF中工作_Javascript_Jquery_Firefox_Scroll - Fatal编程技术网

Javascript jQuery scrollTo可以在Chrome中工作,但不能在FF中工作

Javascript jQuery scrollTo可以在Chrome中工作,但不能在FF中工作,javascript,jquery,firefox,scroll,Javascript,Jquery,Firefox,Scroll,好的,我有一个滚动到函数,如下所示: $.fn.scrollTo = function(t, d, o) { var scrollTarget = t; var offsetTop = (typeof(o) != 'undefined') ? o : Math.floor((window.innerHeight / 2) - 20); var duration = (typeof(d) != 'undefined') ? d : 10;

好的,我有一个
滚动到
函数,如下所示:

$.fn.scrollTo = function(t, d, o)
    {
        var scrollTarget = t;
        var offsetTop = (typeof(o) != 'undefined') ? o : Math.floor((window.innerHeight / 2) - 20);
        var duration = (typeof(d) != 'undefined') ? d : 10;
        var easing = 'swing';
        var scrollPane = $(this);
        var scrollY = (typeof scrollTarget == "number") ? scrollTarget : scrollTarget.offset().top + scrollPane.scrollTop() - parseInt(offsetTop);
        scrollPane.animate({scrollTop : scrollY }, parseInt(duration), easing, function()
        {
            if (typeof callback == 'function')
                callback.call(this);
        });
    }
我通过
$(“body”)调用它

它在Chrome上运行得非常完美,但在Firefox上却什么也没发生

scrollTo
scrollPane.animate
都会被调用,但什么都不会发生。也没有错误,所有的值看起来都是正确的-它只是不滚动


它只被调用一次。

这是因为在浏览器之间滚动的顶级页面元素不一致。一些浏览器如Firfox要求滚动
html
标记,而基于WebKit的浏览器如Chrome则要求滚动
body
元素。最简单的解决方案是将其应用于两个元素,如下所示

$("html, body").scrollTo($obj, 10);