¿Alguien puede dar un ejemplo de trabajo para history.replaceState? Esto es lo que dice w3.org :
history . replaceState(data, title [, url ] )Actualiza la entrada actual en el historial de la sesión para tener los datos, el título y, si se proporcionan y no son nulos, la URL.
Actualizar:
Esto funciona perfectamente:
history.replaceState( {} , 'foo', '/foo' );
La URL está cambiando, pero el título no está cambiando. ¿Es un error o me falta algo? Probado en el último Chrome.
javascript
ajax
html
Serjas
fuente
fuente

titleparámetro no se usa realmente.replaceStateejemplo, y la respuesta aceptada no es en modo alguno unreplaceStateejemplo.Respuestas:
De hecho, esto es un error, aunque intencional desde hace 2 años. El problema radica en algunas especificaciones poco claras y la complejidad cuando
document.titleestán involucrados y viceversa.Consulte la referencia de errores en Webkit y Mozilla . También Opera, en la introducción de History API, dijo que no estaba usando el parámetro de título y probablemente todavía no lo hace.
Solucion potencial
La única forma en que veo es alterar el elemento del título y usar pushState en su lugar:
fuente
replaceState()y simplemente establecer el título del documento manualmentedocument.title = "title"Aquí hay un ejemplo mínimo y artificial.
Hay más,
replaceState()pero no sé qué es exactamente lo que quieres hacer con él.fuente
titleparámetro enreplaceState()es, que yo sepa, ignorado en todos los navegadores.history.pushStateempuja el estado actual de la página a la pila del historial y cambia la URL en la barra de direcciones. Entonces, cuando regresas, ese estado (el objeto que pasaste) te es devuelto.Actualmente, eso es todo lo que hace. Usted debe realizar cualquier otra acción de página, como mostrar la nueva página o cambiar el título de la página.
La especificación W3C que vincula es solo un borrador, y el navegador puede implementarla de manera diferente. Firefox , por ejemplo, ignora el
titleparámetro por completo.Aquí hay un ejemplo simple de lo
pushStateque uso en mi sitio web.fuente
replaceStatecambia el estado actual de la página. Le permite cambiar el objeto de estado y la URL del estado actual de la página.mira el ejemplo
y buscar
location.hash;fuente
El segundo argumento Título no significa Título de la página: es más una definición / información para el estado de esa página
Pero aún podemos cambiar el título usando el evento onpopstate y pasando el nombre del título no desde el segundo argumento, sino como un atributo desde el primer parámetro pasado como objeto
Referencia: http://spoiledmilk.com/blog/html5-changing-the-browser-url-without-refreshing-page/
fuente
Según MDN History doc.
Se dice claramente que el segundo argumento es para el futuro, no por el momento. Tienes razón, el segundo argumento es tratar con el título de la página web, pero actualmente es ignorado por todos los principales navegadores.
Firefox actualmente ignora este parámetro, aunque puede usarlo en el futuro. Pasar la cadena vacía aquí debería estar a salvo de futuros cambios en el método. Alternativamente, puede pasar un título corto para el estado al que se está mudando.
fuente
Realmente quería responder a la respuesta de @ Sev.
Sev tiene razón, hay un error dentro del
window.history.replaceStatefuente
Supongamos que https://www.mozilla.org/foo.html ejecuta el siguiente JavaScript:
Esto hará que la barra de URL muestre https://www.mozilla.org/bar2.html , pero no hará que el navegador cargue bar2.html o incluso compruebe que bar2.html existe.
fuente