$ (window) .scrollTop () vs. $ (document) .scrollTop ()


Respostas:


149

Ambos terão o mesmo efeito .

No entanto, como apontado nos comentários: $(window).scrollTop()é suportado por mais navegadores da web que $('html').scrollTop().


3
ele retorna 0 no IE8 (embora minha página está em modo de peculiaridades, que podem desempenhar um fator)
Greg Ogle

38
$ ('html'). scrollTop () não é compatível com vários navegadores (como setter, ele não funciona pelo menos no Chrome). A maneira mais cruzada de fazer isso por enquanto é: $ (window) .scrollTop () como getter, $ ('html, body'). ScrollTop (offset) como setter.
Georgii Ivankin

6
De acordo com essa referência , sem argumentos scrollTop, não rola em nenhum lugar, mas apenas retorna o local de rolagem atual.
precisa

3
@ d2burke scrollTop()é um getter e scrollTop(value)é um setter. scrollTop()sem argumentos não altera a posição de rolagem.

1
@ M98 window.scrollTo (x, y)
Bodman

36

Primeiro, você precisa entender a diferença entre windowe document. O windowobjeto é um objeto do lado do cliente de nível superior. Não há nada acima do windowobjeto. JavaScript é uma linguagem orientada a objetos. Você começa com um objeto e aplica métodos às suas propriedades ou às propriedades de seus grupos de objetos. Por exemplo, o documentobjeto é um objeto do windowobjeto. Para alterar o document's cor de fundo, você deve definir o document' s bgcolorpropriedade.

window.document.bgcolor = "red" 

Para responder sua pergunta, não há diferença no resultado final entre windowe document scrollTop. Ambos darão a mesma saída.

Veja o exemplo de trabalho em http://jsfiddle.net/7VRvj/6/

No uso geral document, principalmente para registrar eventos e usar windowpara fazer coisas como scroll, scrollTop, e resize.


Não há diferença no resultado final. Ambos darão a mesma saída.
Hussein

De maneira geral, alguns navegadores não oferecem suporte à rolagem da janela, pois o objeto da janela pode não ser o objeto que está transbordando.
Bodman

11
Qual navegador não suporta janela, seja específico. Aqui está um exemplo jsfiddle.net/7VRvj/4 . Verifique-o em todos os navegadores e informe-me em qual navegador ele não está funcionando.
Hussein


0

Acabei de ter alguns dos problemas semelhantes scrollTopdescritos aqui.

No final, eu contornei isso no Firefox e no IE usando o seletor$('*').scrollTop(0);

Não é perfeito se você tiver elementos que não deseja afetar, mas contorna a disparidade de Documento, Corpo, HTML e Janela. Se ajudar ...


20
Você nunca deve usar * dessa maneira (de fato, evite * completamente). Em vez de segmentar um elemento, você está afetando todo o DOM. Enorme desempenho atingido. Os seletores devem ser o mais precisos possível.
22414 Vlad

2
Pessoalmente, sempre usei $("html,body").scrollTop(val)- nunca tive problemas
Roi
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.