10

在 Chrome 和 Safari 中,$("body").scrollTop(1000)按预期进行。

在 IE 和 FF 中,没有任何反应。

在 IE 和 FF 中,$(window).scrollTop(1000)工作,但他们去不同的地方。它也适用于 Chrome 和 Safari,但它们也都在不同的地方。它们似乎最多关闭 300-500 像素。

是否有任何一致的方法来设置跨浏览器工作的 scrollTop 属性,如果没有,为什么 jQuery 不抽象这个?

我也想对其进行动画处理,这在 Chrome 和 Safari 中运行良好,但在其他浏览器中则不行。

我唯一的选择是进行浏览器检测吗?(不好的做法)还是有更好的方法?

4

3 回答 3

11

$(jQuery.browser.webkit ? "body": "html").animate({ scrollTop: myTop }, myDur);

Webkit 浏览器(Chrome/Safari,Mac 和 Win)使用“body”,其他(FF/Opera/IE 7-9)使用“html”

一定要喜欢浏览器检测。

于 2012-02-09T23:14:38.397 回答
6

尝试

$(document).scrollTop("...");
于 2012-01-28T01:16:58.630 回答
0

您需要应用scrollTop到其中一个bodyhtml取决于浏览器,但将其应用于两者都没有害处。由于.scrollTop()适用于集合中的第一个元素,但.animate()适用于所有元素,您可以这样做:

$('body, html').animate({
  scrollTop: 1000
}, 'fast');

如果您希望立即应用更改,请将速度 ( 'fast') 更改为0。或者,您可以使用以下语法,但我更喜欢上面的语法:

$('body, html').each(function() { $(this).scrollTop(1000); });
于 2014-09-05T01:22:05.810 回答