¿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
title
parámetro no se usa realmente.replaceState
ejemplo, y la respuesta aceptada no es en modo alguno unreplaceState
ejemplo.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.title
está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
title
parámetro enreplaceState()
es, que yo sepa, ignorado en todos los navegadores.history.pushState
empuja 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
title
parámetro por completo.Aquí hay un ejemplo simple de lo
pushState
que uso en mi sitio web.fuente
replaceState
cambia 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.replaceState
fuente
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