Respostas:
Ambos terão o mesmo efeito .
No entanto, como apontado nos comentários: $(window).scrollTop()
é suportado por mais navegadores da web que $('html').scrollTop()
.
scrollTop
, não rola em nenhum lugar, mas apenas retorna o local de rolagem atual.
scrollTop()
é um getter e scrollTop(value)
é um setter. scrollTop()
sem argumentos não altera a posição de rolagem.
Primeiro, você precisa entender a diferença entre window
e document
. O window
objeto é um objeto do lado do cliente de nível superior. Não há nada acima do window
objeto. 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 document
objeto é um objeto do window
objeto. Para alterar o document
's cor de fundo, você deve definir o document
' s bgcolor
propriedade.
window.document.bgcolor = "red"
Para responder sua pergunta, não há diferença no resultado final entre window
e document
scrollTop
. Ambos darão a mesma saída.
No uso geral document
, principalmente para registrar eventos e usar window
para fazer coisas como scroll
, scrollTop
, e resize
.
A maneira entre navegadores de fazer isso é
var top = ($(window).scrollTop() || $("body").scrollTop());
$("body").scrollTop()
sempre retorne 0 no Google Chrome.
$("body").scrollTop()
está obsoleto, não funciona mais no Chrome ou no FF . Ele retornará 0
Acabei de ter alguns dos problemas semelhantes scrollTop
descritos 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 ...
$("html,body").scrollTop(val)
- nunca tive problemas