决定滚动哪个,document.documentElement或document.body

时间:2012-03-27 15:47:50

标签: javascript jquery html

我正在构建一个页面,当发生某些事情时,必须将动画滚动到某些位置。

我正在将jQuery.animate应用于document.documentElement,它似乎在Firefox和某些版本的IE上正常运行,而在Chrome和其他版本的IE上,它必须适用于document.body工作。

我在这里是个白痴吗?我错过了什么?如果我不是,那么检测哪一个使用的正确方法是什么?

4 个答案:

答案 0 :(得分:2)

你不是白痴,一直很棘手,例如看here评论:)

据我记得,     $('html, body').animate({scrollTop: '-=100'}) 现在适用于所有主流浏览器。

答案 1 :(得分:0)

一个易于使用的插件是scrollTo:http://demos.flesler.com/jquery/scrollTo/

否则您通常可以使用$(window).animate();

答案 2 :(得分:0)

执行此操作的安全方法似乎是立即在document.documentElementdocument.bodywindow上运行动画。一个人肯定会工作。

即使这个解决方案很丑陋,但在大多数情况下都适用。

答案 3 :(得分:0)

有几种非常古老的方法(不是标准的,但在每个浏览器中都有效):window.scroll ()window.scrollTo()window.scrollBy()等。参见例如此MDN页面用于文档:https://developer.mozilla.org/en-US/docs/DOM/Window.scroll

请注意,在Firefox或Chrome中,这些方法只会更改scrollTop / scrollLeft并且不会立即滚动(滚动会延迟到javascript事件处理程序返回), 在Opera和IE中,这些方法实际上是立即滚动窗口(这不是很好)。

如果所有浏览器都可以使用相同的元素进行滚动,那将会好得多。