¿Internet Explorer admite pushState y replaceState?

140

¿Alguien sabe si Internet Explorer admite los métodos history.pushState()y history.replaceState()para manipular el historial del navegador ? Teniendo en cuenta que estos solo se están implementando en Firefox 4, no estoy conteniendo la respiración, pero ¿alguien sabe si vendrán en IE9?

David Johnstone
fuente
3
De hecho, deprimente si IE9 no agrega esto.
Eric Wahlforss
18
Por lo que vale, History.js proporciona la misma API HTML5 al tiempo que degrada con gracia cualquier navegador que no lo admite (incluido el soporte para datos y títulos, y reemplaza la funcionalidad State). Usar eso significaría que no tendría que cambiar su código para los cambios de IE9.
Balupton
2
Por otro lado, algunos argumentan en contra de recurrir a los hashes. danwebb.net/2011/5/28/it-is-about-the-hashbangs
David Johnstone
1
@CHiRiLo: debe incluir una referencia a jQuery . Esta es una biblioteca de JavaScript de Google que se usa ampliamente y le facilitará mucho la vida cuando trabaje con JavaScript en sus sitios web.
temor
55
Google no es el desarrollador principal de jQuery (podría haber contribuido); sin embargo, lo aloja en su CDN.
trojjer

Respuestas:

196

Probablemente el mejor sitio para la información de compatibilidad del navegador es CanIUse . Aquí está la sección de historia .

Resumen - IE9: no , IE10: sí (a partir de la vista previa de la plataforma 3)

El primer Release Candidate de IE9 (lanzado el 10 de febrero de 2011) no es compatible con history.pushState o history.replaceState. En general, no se agregan nuevas características después de que un producto llega a la etapa RC, por lo que es muy poco probable que el IE9 final admita estos métodos.

Microsoft tiene una buena visión general para los desarrolladores de las características que IE9 tiene.

Actualización: Internet Explorer 9 fue lanzado (el 14 de marzo de 2011) y definitivamente no soporta history.pushState()o history.replaceState().

Actualización 2: La vista previa de la plataforma actual de IE10 todavía no es compatible con pushState / replaceState .

Actualización 3: ¡La Vista previa de plataforma 3 de IE10 es compatible con la API de historial! Detalles

dave1010
fuente
A partir de hoy, el historial de IE10 tiene un error que lo hace inútil, el evento popstate no se dispara. Detalles aquí: stackoverflow.com/questions/14698299/…
citykid
17

IE9 no lo admite.

Sin embargo, puede usar una solución alternativa utilizando un Polyfill para obtener la funcionalidad: History.js https://github.com/browserstate/history.js .

Modernizr hace un buen trabajo enumerando HTML 5 Polyfills aquí https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills .

La advertencia es que agregará una cadena de consulta a su URL en navegadores que solo admitan funciones HTML 4.

Sebastian Patten
fuente
a partir de los comentarios en la pregunta anterior, popstate no se dispara en IE10
Mandeep Jain
History.js es una buena solución si debe admitir IE 9 o inferior, pero es 23 KB minimizado. Eso es mucho por solo apoyar algunos métodos.
Neil Monroe
0

Por cierto, puede obtener dicho error en razón de la ruta absoluta en pushState (). Cuando configuré el error relativo de la ruta desapareció.

f0rmat1k
fuente