2013-07-31 7 views
5

in Chrome das folgende Rennen immer 0 zurück:Immer die aktuelle Bildlaufposition in Chrome scrollTop() auf Seite laden/aktualisieren

$(window).on('load', function(){ 
    console.log($(window).scrollTop()); 
}); 

Rennen am selben Befehl über die Konsole:

$(window).scrollTop() 

Gibt die richtige Nummer zurück. (d. h .: 843)

Es gibt eine Menge Fragen zu diesem Thema hier auf StackOverflow, aber keiner von ihnen hat mir eine korrekte funktionierende Antwort oder Alternative gegeben. Ich bin ratlos ...

+0

Sprechen Sie über eine URL geladen die auf einen benannten Anker auf der Seite verweist, zB: example.com/#section? – David

Antwort

5

Die scrollTop() gibt die aktuelle vertikale Position der Bildlaufleiste zurück. Normalerweise befindet sich die Bildlaufleiste beim Laden der Seite in der Position 0. Wenn die Konsole etwas anderes ausgibt, müssen Sie oder der Browser müssen scrollte, bevor die Funktion aufgerufen wurde.

Wenn Sie mit dem Namen Anker oder das Aktualisieren der Seite von einer gescrollt Position sind, können Sie einen Handler an das Scroll-Ereignis binden, die nur einmal ausgelöst - beim Laden der Seite:

$(window).on('scroll', function() { 
    console.log($(this).scrollTop()); 
}); 
+2

Deshalb lautet die Frage, Seite laden/aktualisieren. Da der Browser bei einem Refresh seine Scroll-Position beibehält, ist genau das, was ich suche. – Chris

+0

Nevermind, Ihre Lösung funktioniert gut ... :) – Chris

+0

Ich klärte die Antwort, um darauf hinzuweisen, dass die Lösung auch die Auto-Scroll-Funktion umfasst einige Browser auf Refresh haben. – David