Czy Internet Explorer obsługuje pushState i replaceState?

140

Czy ktoś wie, czy Internet Explorer obsługuje metody history.pushState()i history.replaceState()do manipulowania historią przeglądarki ? Biorąc pod uwagę, że są one dopiero wdrażane w przeglądarce Firefox 4, nie wstrzymuję oddechu, ale czy ktoś wie, czy pojawią się w IE9?

David Johnstone
źródło
3
Rzeczywiście przygnębiające, jeśli IE9 tego nie dodaje.
Eric Wahlforss
18
To, co jest warte, History.js zapewnia ten sam interfejs API HTML5, jednocześnie z gracją degradując każdą przeglądarkę, która go nie obsługuje (w tym obsługę danych i tytułów oraz funkcję replaceState). Używanie tego oznaczałoby, że nie musiałbyś zmieniać kodu pod kątem zmian w IE9.
balupton
2
Z drugiej strony niektórzy argumentują, że nie wracają do haszów. danwebb.net/2011/5/28/it-is-about-the-hashbangs
David Johnstone
1
@CHiRiLo: Musisz dołączyć odniesienie do jQuery . Jest to powszechnie używana biblioteka javascript firmy Google, która znacznie ułatwi Ci życie podczas pracy z javascript w witrynach internetowych.
awe
5
Google nie jest głównym deweloperem jQuery (mógł mieć swój wkład); jednak hostuje go na swoim CDN.
trojjer

Odpowiedzi:

196

Prawdopodobnie najlepszą stroną z informacjami o kompatybilności przeglądarek jest CanIUse . Oto sekcja dotycząca historii .

Podsumowanie - IE9: nie , IE10: tak (od wersji platformy 3)

Pierwsza wersja programu IE9 Candidate (wydana 10 lutego 2011 r.) Nie obsługuje funkcji history.pushState ani history.replaceState. Generalnie żadne nowe funkcje nie są dodawane po tym, jak produkt dotrze do etapu RC, więc jest bardzo mało prawdopodobne, że ostateczna wersja IE9 będzie obsługiwać te metody.

Microsoft ma dobry przegląd dla programistów funkcji, które ma IE9.

Aktualizacja: Internet Explorer 9 został uruchomiony (14 marca 2011 r.) I zdecydowanie nie obsługuje history.pushState()lubhistory.replaceState() .

Aktualizacja 2: Obecna wersja zapoznawcza platformy IE10 nadal nie obsługuje funkcji pushState / replaceState .

Aktualizacja 3: Platforma Preview 3 IE10 obsługuje interfejs API historii! Detale

dave1010
źródło
Na dzień dzisiejszy w historii IE10 występuje błąd, który czyni go bezużytecznym, zdarzenie popstate nie jest uruchamiane. Szczegóły tutaj: stackoverflow.com/questions/14698299/ ...
citykid
17

IE9 tego nie obsługuje.

Możesz jednak użyć obejścia za pomocą Polyfill, aby uzyskać funkcjonalność - History.js https://github.com/browserstate/history.js .

Modernizr wykonuje dobrą listę zadań HTML 5 Polyfills tutaj https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills .

Zastrzeżenie polega na tym, że doda ciąg zapytania do adresu URL w przeglądarkach, które obsługują tylko funkcje HTML 4.

Sebastian Patten
źródło
jak z komentarzy w powyższym pytaniu, popstate nie odpala w IE10
Mandeep Jain
History.js to dobre rozwiązanie, jeśli musisz obsługiwać przeglądarkę IE 9 lub starszą, ale ma ona 23 KB, zminimalizowaną. To dużo jak na obsługę kilku metod.
Neil Monroe
0

Przy okazji możesz otrzymać taki błąd z powodu ścieżki bezwzględnej w pushState (). Kiedy ustawiłem względną ścieżkę, błąd zniknął.

f0rmat1k
źródło