2011-10-20 15 views
6

Io uso location.hash per scorrere da qualche parte nella mia pagina. Funziona bene quando la posizione non ha hash. Ma non funziona se la posizione ha già lo stesso valore di hash.location.hash ha effetto solo una volta in chrome e safari

Ad esempio, location.hash = 'a'; scorre a <div id="a"></div>. Ora location.href sarà come http://www.example.com/test.html#a. E se location.hash = 'a'; viene attivato di nuovo, la finestra non scorrerà. Questo ha luogo solo in Chrome e Safari.

Ho trovato una soluzione allo Scrolling a page using location.hash in Safari, ma non voglio aggiungere un tag non necessario.

E ho anche provato location.href = '#a'. Funziona bene ma temo che causerà il ricaricamento della pagina. Qualcuno ha idee migliori?

risposta

14

La soluzione migliore è sostituire temporaneamente l'hash con un valore che si sa che non esiste nella pagina, quindi ricaricare l'hash cercando di accedere.

location.hash = 'a'; 

// this is the function that changes the hash 
function setHash(newHash) { 
    location.hash = 'someHashThatDoesntExist'; 
    location.hash = newHash; 
} 

setHash('a'); 

Questo dovrebbe fare il trucco.

Problemi correlati