Pregunta Actualizando la barra de direcciones con una nueva URL sin hash o recargando la página


O soñé con Chrome (dev channel) implementando una forma de actualizar la barra de direcciones a través de javascript (la ruta, no el dominio) sin volver a cargar la página o realmente lo han hecho.

Sin embargo, no puedo encontrar el artículo I pensar Yo leo.

¿Estoy loco o hay una manera de hacer esto (en Chrome)?

PD. No estoy hablando de window.location.hash, et al. Si lo anterior existe la respuesta a esta pregunta será falso


518
2017-07-26 20:18


origen


Respuestas:


¡Ahora puede hacer esto en la mayoría de los navegadores "modernos"!

Aquí está el artículo original que leí (publicado el 10 de julio de 2010): HTML5: cambiar el navegador-URL sin refrescar la página.

Para una vista más detallada de pushState / replaceState / popstate (también conocido como la API de historial de HTML5) ver los documentos de MDN.

TL; DR, puedes hacer esto:

window.history.pushState("object or string", "Title", "/new-url");

Ver mi respuesta a Modificar la URL sin volver a cargar la página para un manual básico.


739
2017-07-27 01:34



Cambiar solo lo que está detrás del hash: navegadores antiguos

document.location.hash = 'lookAtMeNow';

Cambiando la URL completa. Chrome, Firefox, IE10 +

history.pushState('data to be passed', 'Title of the page', '/test');

Lo anterior agregará una nueva entrada al historial para que pueda presionar el botón Atrás para ir al estado anterior. Para cambiar la URL en su lugar sin agregar una nueva entrada al uso del historial

history.replaceState('data to be passed', 'Title of the page', '/test');

¡Intenta ejecutar estos en la consola ahora!


104
2017-09-01 16:35



La actualización a la respuesta de David para detectar incluso los navegadores no admite pushstate:

if (history.pushState) {
  window.history.pushState("object or string", "Title", "/new-url");
} else {
  document.location.href = "/new-url";
}

9
2017-07-04 11:01