es gibt 0 in IE8 zurück (obwohl meine Seite im Mackenmodus ist, der einen Faktor spielen kann)
Greg Ogle
38
$ ('html'). scrollTop () ist nicht browserübergreifend (als Setter funktioniert es zumindest in Chrome nicht). Die derzeit am besten geeignete Methode ist: $ (Fenster) .scrollTop () als Getter, $ ('html, body'). ScrollTop (Offset) als Setter.
Georgii Ivankin
6
Laut dieser Referenz wird ohne Argumente scrollTopnirgendwo gescrollt, sondern nur die aktuelle Bildlaufposition zurückgegeben.
ODER Mapper
3
@ d2burke scrollTop()ist ein Getter und scrollTop(value)ist ein Setter. scrollTop()ohne Argumente ändert die Bildlaufposition nicht.
1
@ M98 window.scrollTo (x, y)
Bodman
36
Zunächst müssen Sie den Unterschied zwischen windowund verstehen document. Das windowObjekt ist ein clientseitiges Objekt der obersten Ebene. Über dem windowObjekt befindet sich nichts . JavaScript ist eine objektorientierte Sprache. Sie beginnen mit einem Objekt und wenden Methoden auf seine Eigenschaften oder die Eigenschaften seiner Objektgruppen an. Beispielsweise ist das documentObjekt ein Objekt des windowObjekts. Um die Änderung zu document‚s Hintergrundfarbe, dann würden Sie die eingestellte documents‘ bgcolorEigenschaft.
window.document.bgcolor ="red"
Um Ihre Frage zu beantworten: Es gibt keinen Unterschied im Endergebnis zwischen windowund documentscrollTop. Beide geben die gleiche Ausgabe.
Kein Unterschied im Endergebnis. Beide geben die gleiche Ausgabe.
Hussein
Anscheinend unterstützen einige Browser das Scrollen von Fenstern nicht, da das Fensterobjekt möglicherweise nicht das überlaufende Objekt ist.
Bodman
11
Welcher Browser Fenster nicht unterstützt, sei genau. Hier ist ein Beispiel jsfiddle.net/7VRvj/4 . Überprüfen Sie es in allen Browsern und lassen Sie mich wissen, auf welchem Browser es nicht funktioniert.
Hussein
4
Browserübergreifende Vorgehensweise ist
var top =($(window).scrollTop()|| $("body").scrollTop());
Ich hatte gerade einige der ähnlichen Probleme mit scrollTop hier beschriebenen .
Am Ende habe ich dies in Firefox und IE mithilfe des Selektors umgangen$('*').scrollTop(0);
Nicht perfekt, wenn Sie Elemente haben, die Sie nicht beeinflussen möchten, aber die Unterschiede zwischen Dokument, Text, HTML und Fenster umgehen. Wenn es hilft ...
Sie sollten niemals * auf diese Weise verwenden (in der Tat * ganz vermeiden *). Anstatt auf ein Element abzuzielen, wirken Sie sich auf das gesamte DOM aus. Riesiger Leistungshit. Selektoren sollten so präzise wie möglich sein.
Vlad
2
Ich persönlich habe immer $("html,body").scrollTop(val)- hatte nie Probleme
Antworten:
Sie werden beide den gleichen Effekt haben .
Wie in den Kommentaren erwähnt,
$(window).scrollTop()
wird jedoch von mehr Webbrowsern als unterstützt$('html').scrollTop()
.quelle
scrollTop
nirgendwo gescrollt, sondern nur die aktuelle Bildlaufposition zurückgegeben.scrollTop()
ist ein Getter undscrollTop(value)
ist ein Setter.scrollTop()
ohne Argumente ändert die Bildlaufposition nicht.Zunächst müssen Sie den Unterschied zwischen
window
und verstehendocument
. Daswindow
Objekt ist ein clientseitiges Objekt der obersten Ebene. Über demwindow
Objekt befindet sich nichts . JavaScript ist eine objektorientierte Sprache. Sie beginnen mit einem Objekt und wenden Methoden auf seine Eigenschaften oder die Eigenschaften seiner Objektgruppen an. Beispielsweise ist dasdocument
Objekt ein Objekt deswindow
Objekts. Um die Änderung zudocument
‚s Hintergrundfarbe, dann würden Sie die eingestelltedocument
s‘bgcolor
Eigenschaft.Um Ihre Frage zu beantworten: Es gibt keinen Unterschied im Endergebnis zwischen
window
unddocument
scrollTop
. Beide geben die gleiche Ausgabe.Überprüfen Sie das Arbeitsbeispiel unter http://jsfiddle.net/7VRvj/6/
Im Allgemeinen Gebrauch
document
hauptsächlich Ereignisse zu registrieren und verwendenwindow
zu tun , Dinge wiescroll
,scrollTop
, undresize
.quelle
Browserübergreifende Vorgehensweise ist
quelle
$("body").scrollTop()
Geben Sie in Google Chrome immer 0 zurück.$("body").scrollTop()
ist veraltet, funktioniert nicht mehr auf Chrome oder FF . Es wird 0 zurückgebenIch hatte gerade einige der ähnlichen Probleme mit
scrollTop
hier beschriebenen .Am Ende habe ich dies in Firefox und IE mithilfe des Selektors umgangen
$('*').scrollTop(0);
Nicht perfekt, wenn Sie Elemente haben, die Sie nicht beeinflussen möchten, aber die Unterschiede zwischen Dokument, Text, HTML und Fenster umgehen. Wenn es hilft ...
quelle
$("html,body").scrollTop(val)
- hatte nie Probleme