2011-10-20 8 views
6

Uso location.hash para desplazarme a algún lugar de mi página. Funciona bien cuando la ubicación no tiene hash. Pero no funciona si la ubicación ya tiene el mismo valor hash.location.hash solo tiene efecto una vez en cromo y safari

Por ejemplo, location.hash = 'a'; despliega en <div id="a"></div>. Ahora location.href será como http://www.example.com/test.html#a. Y si location.hash = 'a'; se activa nuevamente, la ventana no se desplazará. Esto solo tiene lugar en Chrome y Safari.

Encontré una solución en Scrolling a page using location.hash in Safari, pero no quiero agregar una etiqueta innecesaria.

Y también he intentado location.href = '#a'. Eso funciona bien, pero me temo que causará la recarga de la página. ¿Alguien tiene mejores ideas?

Respuesta

14

Su mejor opción es reemplazar el hash temporalmente con algún valor que sepa que no existe en la página, y luego volver a cargar el hash tratando de acceder.

location.hash = 'a'; 

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

setHash('a'); 

Que debe hacer el truco.

Cuestiones relacionadas