Internet Explorer prend-il en charge pushState et replaceState?

140

Quelqu'un sait-il si Internet Explorer prend en charge les méthodes history.pushState()et history.replaceState()pour manipuler l'historique du navigateur ? Étant donné que ceux-ci sont simplement mis en œuvre dans Firefox 4, je ne retiens pas mon souffle, mais est-ce que quelqu'un sait s'ils arrivent dans IE9?

David Johnstone
la source
3
Déprimant en effet si IE9 n'ajoute pas cela.
Eric Wahlforss
18
Pour ce que ça vaut, History.js fournit la même API HTML5 tout en dégradant gracieusement tout navigateur qui ne le prend pas en charge (y compris la prise en charge des données et des titres, et la fonctionnalité replaceState). L'utilisation de cela signifierait que vous n'auriez pas à modifier votre code pour les modifications d'IE9.
balupton
2
D'un autre côté, certains s'opposent au retour aux hachages. danwebb.net/2011/5/28/it-is-about-the-hashbangs
David Johnstone
1
@CHiRiLo: Vous devez inclure une référence à jQuery . Il s'agit d'une bibliothèque javascript de Google largement utilisée et qui vous facilitera la vie lorsque vous travaillez avec javascript sur vos sites Web.
awe
5
Google n'est pas le développeur principal de jQuery (il a peut-être contribué); il l'héberge cependant sur son CDN.
trojjer

Réponses:

196

CanIUse est probablement le meilleur site d'information sur la compatibilité des navigateurs . Voici la section sur l' histoire .

Résumé - IE9: non , IE10: oui (à partir de l'aperçu de la plateforme 3)

La première version Release Candidate d'IE9 (publiée le 10 février 2011) ne prend pas en charge history.pushState ou history.replaceState. En général, aucune nouvelle fonctionnalité n'est ajoutée après qu'un produit arrive au stade RC, il est donc très peu probable que l'IE9 final supporte ces méthodes.

Microsoft a un bon aperçu pour les développeurs des fonctionnalités d'IE9.

Mise à jour: Internet Explorer 9 a été lancé (le 14 mars 2011) et ne prend certainement pas en charge history.pushState()ou history.replaceState().

Mise à jour 2: l'aperçu actuel de la plate-forme d' IE10 ne prend toujours pas en charge pushState / replaceState .

Mise à jour 3: Platform Preview 3 d'IE10 prend en charge l'API historique! Détails

dave1010
la source
À partir d'aujourd'hui, l'historique d'IE10 a un bogue qui le rend inutile, l'événement popstate ne se déclenche pas. Détails ici: stackoverflow.com/questions/14698299/…
citykid
17

IE9 ne le prend pas en charge.

Vous pouvez cependant utiliser un contournement à l'aide d'un Polyfill pour obtenir la fonctionnalité - History.js https://github.com/browserstate/history.js .

Modernizr fait un bon travail en listant les Polyfills HTML 5 ici https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills .

La mise en garde est qu'il ajoutera une chaîne de requête à votre URL dans les navigateurs qui ne prennent en charge que les fonctionnalités HTML 4.

Sebastian Patten
la source
à partir des commentaires dans la question ci-dessus, popstate ne se déclenche pas dans IE10
Mandeep Jain
History.js est une bonne solution si vous devez prendre en charge IE 9 ou inférieur, mais il est de 23 Ko, minifié. C'est beaucoup pour prendre en charge quelques méthodes.
Neil Monroe
0

Btw, vous pouvez obtenir une telle erreur en raison du chemin absolu dans pushState (). Lorsque j'ai défini l'erreur de chemin relatif a disparu.

f0rmat1k
la source