2011-08-16 26 views
10

¿Es posible cambiar la URL que se muestra en la barra de direcciones del navegador sin que el navegador vaya a esa página? Como, por ejemplo, después de actualizar el contenido de una página a través de una llamada AJAX?Actualizar la URL del navegador sin tener que volver a cargar la página

Según tengo entendido, esto no es posible, razón por la cual los sitios como Twitter y Facebook actualizan la etiqueta hash en las llamadas ajax.

Eso es hasta hoy, cuando fui a http://8tracks.com/ y comencé a jugar con el filtro en el lado derecho ... activando y desactivando diferentes géneros, noté que a pesar de que estaba haciendo llamadas ajax para actualizar el contenido en la página, la URL también se estaba actualizando dinámicamente.

¿Alguien sabe cómo lo hacen?

(a un lado, actualmente estoy usando Chrome, pero cuando volví y miré de nuevo con IE9, me di cuenta de que la URL no se actualizaba .. es este tal vez un único Chrome?)

Respuesta

22

Este es posible en los navegadores modernos mediante el uso de la API de HTML5 Historia:

history.pushState(null, null, '/some-path') 

Ver https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history#The_pushState%28%29.c2.a0method

Esto funciona en Firefox, Chrome, Opera, Safari (no IE).

+0

1 de esta respuesta. La API de historial de HTML5 es la forma correcta/única de hacer esto. Para ver un artículo de fondo, puede consultar https://github.com/balupton/history.js/wiki/Intelligent-State-Handling, que explica la evolución de hashes a hashbangs a la API de historial de HTML5. – balupton

Cuestiones relacionadas