Odpowiedzi:
Oba będą miały ten sam efekt .
Jednak, jak wskazano w komentarzach: $(window).scrollTop()
jest obsługiwany przez więcej przeglądarek internetowych niż $('html').scrollTop()
.
scrollTop
nigdzie nie przewija się, a jedynie zwraca bieżącą lokalizację przewijania.
scrollTop()
jest geterem i scrollTop(value)
setera. scrollTop()
bez argumentów nie zmienia pozycji przewijania.
Po pierwsze, musisz zrozumieć różnicę między window
i document
. window
Obiekt jest obiektem najwyższego poziomu po stronie klienta. Nad obiektem nie ma nic window
. JavaScript jest językiem obiektowym. Zaczynasz od obiektu i stosujesz metody do jego właściwości lub właściwości jego grup obiektów. Na przykład document
obiekt jest obiektem window
obiektu. Aby zmienić document
„s kolor tła, można ustawić document
” s bgcolor
nieruchomości.
window.document.bgcolor = "red"
Aby odpowiedzieć na twoje pytanie, nie ma różnicy w wyniku końcowym pomiędzy window
i document
scrollTop
. Oba dają taką samą moc wyjściową.
W powszechnym użyciu document
głównie do rejestracji zdarzeń i wykorzystywać window
do robienia rzeczy, jak scroll
, scrollTop
i resize
.
Można to zrobić w różnych przeglądarkach
var top = ($(window).scrollTop() || $("body").scrollTop());
$("body").scrollTop()
zawsze zwracaj 0 w Google Chrome.
$("body").scrollTop()
jest przestarzałe, nie działa już w Chrome ani FF . Zwróci 0
Właśnie miałem podobne problemy scrollTop
opisanym tutaj.
W końcu udało mi się to obejść na Firefox i IE za pomocą selektora$('*').scrollTop(0);
Nie jest to idealne, jeśli masz elementy, których nie chcesz modyfikować, ale omija różnice między dokumentem, treścią, HTML i oknem. Jeśli to pomaga ...
$("html,body").scrollTop(val)
- nigdy nie miałem żadnych problemów