2012-12-19 8 views
7

Sto tentando di aggiornare l'hash e quindi ricaricare la pagina.Vai al link di ancoraggio dopo window.location.reload

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

Dopo aver ricaricato la finestra non si passa al tag di ancoraggio. Come posso ripararlo?

+0

Perché utilizzare l'hash, e quindi ricaricare la pagina ? – adeneo

+1

I ** pensa ** si sta meglio cambiando la proprietà 'href':' window.location.href = url + '# your-hash'; ' –

+0

L'idea è di ricaricare la pagina e quindi passare alla schermata specifica posizionare sulla pagina –

risposta

1

MOZILLA DEVELOPER NETWORK suggeriscono usando replace:

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

Questo è abbastanza banale da realizzare in jQuery se si sta ricaricare la pagina. Basta controllare la proprietà window.location.hash durante il caricamento della pagina.

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

L'unica avvertenza è che il proprio hash corrisponde all'id dell'elemento a cui si sta scorrendo.

Demo here

0

@ Tim S. mia intenzione non è assolutamente di rubare il vostro tuono, ma il tuo commento molto basso chiave di cui sopra è a mio parere la soluzione ottimale a questo problema in quanto è semplice, pulito e le prove con successo in tutta una varietà di browser. Sono quindi creando una risposta di esso a vostro nome:

window.location.href = url#anchor 

(dove URL può essere la pagina corrente - o uno diverso, se lo desideri)

+1

questo NON ricarica la pagina se url/anchor è lo stesso. –