2012-12-19 13 views
7

Ich versuche Hash zu aktualisieren und dann Seite neu laden.Gehen Sie zum Anker Link nach window.location.reload

$('a[name="' + fragment + '"]').remove(); //don't jump before window reloads 
window.location.hash = fragment; 
window.location.reload(true); 

Nach Reload-Fenster springt nicht Tag zu verankern. Wie kann ich es reparieren?

+0

Warum würden Sie den Hash verwenden, und laden Sie dann die Seite ? – adeneo

+1

Ich ** denke ** Sie sind besser, indem Sie die 'href' Eigenschaft ändern:' window.location.href = url + '# your-hash'; ' –

+0

Die Idee ist, die Seite neu zu laden und dann Bildschirm zu bestimmten springen Platz auf der Seite –

Antwort

1

MOZILLA DEVELOPER NETWORK vorschlagen replace mit:

function reloadPageWithHash() { 
    var initialPage = window.location.pathname; 
    window.location.replace('http://example.com/#' + initialPage); 
} 
2

Das ist ziemlich trivial in jQuery zu erreichen, wenn Sie die Seite neu zu laden. Überprüfen Sie einfach die window.location.hash Eigenschaft beim Laden der Seite.

$(document).ready(function() { 
    if(window.location.hash) { // just in case there is no hash 
     $(document.body).animate({ 
      'scrollTop': $(window.location.hash).offset().top 
     }, 2000); 
    } 
}); 

Der einzige Nachteil ist, dass Ihre Hash die ID des Elements entspricht, das Sie zu scrollen.

Demo here

0

@ Tim S. meine Absicht ist absolut nicht Ihre Donner zu stehlen, sondern Ihre sehr low key Kommentar ist über meiner Meinung nach die optimale Lösung für diese Frage, da es einfach, sauber und Tests ist erfolgreich in eine Vielzahl von Browsern. Ich schaffe daher eine Antwort davon in Ihrem Namen:

window.location.href = url#anchor 

(wo url können die aktuelle Seite sein - oder eine andere als gewünscht)

+1

Dies lädt die Seite nicht neu, wenn URL/Anker gleich ist. –

Verwandte Themen