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