$(window).scrollTop() 与 $(document).scrollTop()

IT技术 javascript jquery window document scrolltop
2021-03-16 03:43:50

有什么区别:

$(window).scrollTop()

$(document).scrollTop()

谢谢。

4个回答

它们都会产生相同的效果

然而,由于在评论中指出:$(window).scrollTop()由多个Web浏览器支持$('html').scrollTop()

@M98 window.scrollTo(x,y)
2021-04-18 03:43:50
@d2burkescrollTop()是一个 getter 和scrollTop(value)setter。scrollTop()不带参数不会改变滚动位置。
2021-04-19 03:43:50
$('html').scrollTop() 不是跨浏览器的(作为设置器,它至少在 Chrome 中不起作用)。目前最跨浏览器的方式是: $(window).scrollTop() 作为 getter, $('html,body').scrollTop(offset) 作为 setter。
2021-04-23 03:43:50
它在 IE8 中返回 0(尽管我的页面处于 quirks 模式,这可能是一个因素)
2021-04-25 03:43:50
根据此参考,不带参数scrollTop不会在任何地方滚动,而只会返回当前滚动位置。
2021-05-12 03:43:50

首先,你需要明白之间的差别windowdocumentwindow对象是顶级客户端对象。window物体上方没有任何东西JavaScript 是一种面向对象的语言。您从一个对象开始,然后将方法应用于其属性或其对象组的属性。例如,document对象是对象的window对象。要更改document的背景颜色,您需要设置documentbgcolor属性。

window.document.bgcolor = "red" 

为了回答您的问题,window之间的最终结果没有区别document scrollTop两者都会给出相同的输出。

http://jsfiddle.net/7VRvj/6/检查工作示例

在一般的使用document主要是为了注册的事件,使用window到做这样的事情scrollscrollTopresize

什么浏览器不支持window,具体点。这是一个示例 jsfiddle.net/7VRvj/4在所有浏览器中检查它并让我知道它在哪个浏览器上不起作用。
2021-04-16 03:43:50
显然不是,有些浏览器不支持窗口滚动,因为窗口对象可能不是溢出的对象。
2021-04-26 03:43:50
最终结果没有区别。两者都会给出相同的输出。
2021-05-03 03:43:50

这样做的跨浏览器方式是

var top = ($(window).scrollTop() || $("body").scrollTop());
$("body").scrollTop()已弃用,不再适用于 Chrome 或 FF它将返回 0
2021-04-22 03:43:50
注意:$("body").scrollTop()在 Google Chrome 中总是返回 0。
2021-05-11 03:43:50

我刚刚遇到了一些与scrollTop此处描述的类似问题

最后,我通过使用选择器FirefoxIE上解决了这个问题$('*').scrollTop(0);

如果您有不想影响的元素,这并不完美,但它绕过了文档、正文、HTML 和窗口的差异。如果有帮助...

您永远不应该以这种方式使用 *(实际上,完全避免使用 *)。您不是针对一个元素,而是在影响整个 DOM。巨大的性能冲击。选择器应该尽可能精确。
2021-05-03 03:43:50
我个人一直使用$("html,body").scrollTop(val)- 从来没有任何问题
2021-05-04 03:43:50