2010-09-08 6 views
81

Ich baue eine Website, die ich mit div s veröffentliche. Wenn ich die Seite aktualisiere, nachdem sie zu Position X gescrollt wurde, wird die Seite mit der Bildlaufposition als X geladen.Seitenrollerposition nach oben bei Seitenaktualisierung in HTML erzwingen

Wie kann ich bei Seitenaktualisierung erzwingen, dass die Seite nach oben gescrollt wird?

  • Was kann ich mir vorstellen ist von einigen JS oder jQuery als onLoad() Funktion der Seite SET die Seiten nach oben scrollen laufen. Aber ich weiß nicht, wie ich das machen könnte.

  • Eine bessere Option wäre, wenn es eine Eigenschaft oder etwas ist, die Seite geladen mit Scroll-Position als Standard zu verwenden (zB an der Spitze), die Art von, statt Aktualisierung der Seite wie Seite zu laden sein.

+0

Überraschenderweise keine der Lösungen hier für mich gearbeitet, aber das tat: http://stackoverflow.com/a/11486546/470749 – Ryan

Antwort

120
aussehen würde

Sie können es tun, um die scrollTop Methode auf DOM ready mit:

$(document).ready(function(){ 
    $(this).scrollTop(0); 
}); 
+0

oder '$ (document) .scrollTop (0);' auf jeden Fall funktioniert gut. – zulucoda

+0

funktioniert nicht auf Safari – Ben

+4

Aber das -> http://stackoverflow.com/a/18633915/102133 tut. – Ben

7

Überprüfen Sie die jQuery .scrollTop() Funktion here

es so etwas wie

$(document).load().scrollTop(0); 
+1

Ich wollte wählen, aber es scheint, als würde ich abstimmen und jetzt ist es gesperrt:/mein Schlechter. –

8

Sie können auch versuchen Sie

$(document).ready(function(){ 
    $(window).scrollTop(0); 
}); 

Wenn Sie an Position x scrollen möchten, können Sie den Wert von 0 in x ändern.

+0

Dank ankit seine Arbeiten perfekt für mich. – Hardik

+0

Mein Vergnügen ... Hardik –

28

Die Antwort hier funktioniert nicht für Safari, document.ready wird oft zu früh gefeuert.

sollte das beforeunload Ereignis verwenden, die verhindern, dass Sie für eine einfache Ebene JavaScript-Implementierung einige setTimeout

$(window).on('beforeunload', function(){ 
    $(window).scrollTop(0); 
}); 
+1

Nach der Bildlauffunktion hinzufügen: $ ('html'). Text (''); , so wird der Kinderwagen zurückgesetzt – user956584

+1

@Userpassword Denken Sie nicht $ ("html"). remove() wäre besser? – Ben

83

bilden tun:

window.onbeforeunload = function() { 
 
    window.scrollTo(0, 0); 
 
}

+1

Weg, um die Dinge auf den Kopf zu stellen! Dies ist bei weitem die zuverlässigste Methode. Vielen Dank! – ctrlplusb

+0

@ctrlplusb - froh, dass Sie es nützlich gefunden haben :) – ProfNandaa

+0

Netter Code .. arbeiten ... – Vishnu

4
<script> location.hash = (location.hash) ? location.hash : " "; </script> 

Setzen Sie das obige Skript in Tag Ihrer HTML. Nicht sicher, wie sich einzelne Seiten-Apps verhalten! Aber funktioniert in normalen Seiten wie Charme.

2

funktionierte nicht für mich als google Chrome würde nur zurückscrollen, nachdem die Seite fertig geladen wurde. Was ich verwendet wurde

$(document).ready(function() { 
    var url = window.location.href; 
    console.log(url); 
    if(url.indexOf('#') < 0) { 
     window.location.replace(url + "#"); 
    } else { 
     window.location.replace(url); 
    } 
}); 

// Dies ist die Seite mit einem # am Ende lädt. Es wird also immer oben geladen.

2

Wieder beste Antwort ist:

window.onbeforeunload = function() { window.scrollTo(0,0);

(das ist für nicht-jQuery, nachschlagen, wenn Sie ofr der JQ Methode suchen)

EDIT: ein kleiner Fehler sein "onbeforunload" :) Chrome und andere Browser "merken" sich die letzte Scroll - Position vor dem Entladen, wenn Sie also den Wert auf 0,0 setzen, werden Sie sich vor dem Entladen der Seite an 0,0 erinnern und nicht dorthin zurückrollen Bildlaufleiste war :)

2

Die Antwort hier (Scrollen in $(document).ready) funktioniert nicht, wenn ein Video auf der Seite ist. In diesem Fall wird die Seite gescrollt, nachdem dieses Ereignis ausgelöst wurde, wodurch unsere Arbeit überschrieben wird.

Beste Antwort sollte sein:

$(window).on('beforeunload', function(){ 
    $(window).scrollTop(0); 
}); 
4

Statt location.reload(), einfach location.href = location.href verwenden. Es wird nicht zur vorherigen Position blättern, wie es location.reload() tut.

Hinweis: Dies wird nicht neu geladen, wenn es irgendeine # in der URL ist

Verwandte Themen