zwraca 0 w IE8 (chociaż moja strona jest w trybie dziwactw, co może odgrywać rolę)
Greg Ogle
38
$ ('html'). scrollTop () nie działa w różnych przeglądarkach (jako narzędzie do ustawiania nie działa przynajmniej w Chrome). Najbardziej crossbrowserowym sposobem na to jest teraz: $ (okno) .scrollTop () jako getter, $ ('html, body'). ScrollTop (offset) jako setter.
Georgii Ivankin
6
Zgodnie z tym odniesieniem bez argumentów scrollTopnigdzie nie przewija się, a jedynie zwraca bieżącą lokalizację przewijania.
LUB Mapper
3
@ d2burke scrollTop()jest geterem i scrollTop(value)setera. scrollTop()bez argumentów nie zmienia pozycji przewijania.
1
@ M98 window.scrollTo (x, y)
Bodman
36
Po pierwsze, musisz zrozumieć różnicę między windowi document. windowObiekt 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 documentobiekt jest obiektem windowobiektu. Aby zmienić document„s kolor tła, można ustawić document” s bgcolornieruchomości.
window.document.bgcolor ="red"
Aby odpowiedzieć na twoje pytanie, nie ma różnicy w wyniku końcowym pomiędzy windowi documentscrollTop. Oba dają taką samą moc wyjściową.
Brak różnicy w wyniku końcowym. Oba dają taką samą moc wyjściową.
Hussein,
Najwyraźniej nie, niektóre przeglądarki nie obsługują przewijania okna, ponieważ obiekt okna może nie być przepełnionym obiektem.
Bodman,
11
Która przeglądarka nie obsługuje okna, bądź konkretny. Oto przykład jsfiddle.net/7VRvj/4 . Sprawdź to we wszystkich przeglądarkach i daj mi znać, która przeglądarka nie działa.
Hussein,
4
Można to zrobić w różnych przeglądarkach
var top =($(window).scrollTop()|| $("body").scrollTop());
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 ...
Nigdy nie powinieneś używać * w ten sposób (w rzeczywistości unikaj * całkowicie). Zamiast kierowania na jeden element, wpływasz na cały DOM. Ogromny hit wydajności. Selektory powinny być jak najbardziej precyzyjne.
Vlad
2
Ja osobiście zawsze korzystałem $("html,body").scrollTop(val)- nigdy nie miałem żadnych problemów
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()
.źródło
scrollTop
nigdzie nie przewija się, a jedynie zwraca bieżącą lokalizację przewijania.scrollTop()
jest geterem iscrollTop(value)
setera.scrollTop()
bez argumentów nie zmienia pozycji przewijania.Po pierwsze, musisz zrozumieć różnicę między
window
idocument
.window
Obiekt jest obiektem najwyższego poziomu po stronie klienta. Nad obiektem nie ma nicwindow
. 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ładdocument
obiekt jest obiektemwindow
obiektu. Aby zmienićdocument
„s kolor tła, można ustawićdocument
” sbgcolor
nieruchomości.Aby odpowiedzieć na twoje pytanie, nie ma różnicy w wyniku końcowym pomiędzy
window
idocument
scrollTop
. Oba dają taką samą moc wyjściową.Sprawdź przykład roboczy pod adresem http://jsfiddle.net/7VRvj/6/
W powszechnym użyciu
document
głównie do rejestracji zdarzeń i wykorzystywaćwindow
do robienia rzeczy, jakscroll
,scrollTop
iresize
.źródło
Można to zrobić w różnych przeglądarkach
źródło
$("body").scrollTop()
zawsze zwracaj 0 w Google Chrome.$("body").scrollTop()
jest przestarzałe, nie działa już w Chrome ani FF . Zwróci 0Wł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 ...
źródło
$("html,body").scrollTop(val)
- nigdy nie miałem żadnych problemów