好吧,我有一个scrollTo
函数如下:
$.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").scrollTo($obj, 10);
它在Chrome中完美运行,但在Firefox中没有任何反应。
scrollTo
和scrollPane.animate
都被调用,但没有任何反应。没有错误,并且所有值看起来都正确 - 它只是不滚动。
它只被召唤一次。
答案 0 :(得分:2)
这是因为滚动的顶级页面元素在浏览器中不一致。某些浏览器(如Firfox)需要滚动html
标记,而基于WebKit的浏览器(如Chrome)则需要滚动body
元素。最简单的解决方案是将它应用于这两个元素。
$("html, body").scrollTo($obj, 10);
<强> Working Example 强>