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 documentscrollTop. Ambos darão a mesma saída.
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
4
A maneira entre navegadores de fazer isso é
var top =($(window).scrollTop()|| $("body").scrollTop());
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
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()
.fonte
scrollTop
, não rola em nenhum lugar, mas apenas retorna o local de rolagem atual.scrollTop()
é um getter escrollTop(value)
é um setter.scrollTop()
sem argumentos não altera a posição de rolagem.Primeiro, você precisa entender a diferença entre
window
edocument
. Owindow
objeto é um objeto do lado do cliente de nível superior. Não há nada acima dowindow
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, odocument
objeto é um objeto dowindow
objeto. Para alterar odocument
's cor de fundo, você deve definir odocument
' sbgcolor
propriedade.Para responder sua pergunta, não há diferença no resultado final entre
window
edocument
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 usarwindow
para fazer coisas comoscroll
,scrollTop
, eresize
.fonte
A maneira entre navegadores de fazer isso é
fonte
$("body").scrollTop()
sempre retorne 0 no Google Chrome.$("body").scrollTop()
está obsoleto, não funciona mais no Chrome ou no FF . Ele retornará 0Acabei 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 ...
fonte
$("html,body").scrollTop(val)
- nunca tive problemas