Поддерживает ли Internet Explorer pushState и replaceState?


140

Кто - нибудь знает , если Internet Explorer поддерживает history.pushState()и history.replaceState()методы для манипулирования истории браузера ? Учитывая, что они только что реализуются в Firefox 4, я не затаил дыхание, но кто-нибудь знает, появятся ли они в IE9?


3
Действительно удручает, если IE9 не добавляет этого.
Eric Wahlforss

18
Как бы то ни было, History.js предоставляет тот же API HTML5, изящно деградируя любой браузер, который его не поддерживает (включая поддержку данных и заголовков, а также функциональность replaceState). Использование этого означало бы, что вам не пришлось бы изменять свой код для изменений IE9.
Balupton

2
С другой стороны, некоторые возражают против возврата к хешам. danwebb.net/2011/5/28/it-is-about-the-hashbangs
Дэвид Джонстон

1
@CHiRiLo: вам нужно включить ссылку на jQuery . Это широко используемая библиотека javascript от Google, которая значительно облегчит вашу жизнь при работе с javascript на ваших веб-сайтах.
awe

5
Google не является основным разработчиком jQuery (возможно, он внес свой вклад); однако он размещает его на своем CDN.
Trojjer 01

Ответы:


196

Вероятно, лучший сайт для информации о совместимости браузеров - CanIUse . Вот раздел по истории .

Резюме - IE9: нет , IE10: да ( начиная с предварительной версии платформы 3)

Первый релиз-кандидат IE9 (выпущенный 10 февраля 2011 г.) не поддерживает history.pushState или history.replaceState. Как правило, новые функции не добавляются после того, как продукт переходит на стадию RC, поэтому очень маловероятно, что окончательный IE9 будет поддерживать эти методы.

У Microsoft есть хороший обзор возможностей IE9 для разработчиков .

Обновление: Internet Explorer 9 был запущен (14 марта 2011 г.) и определенно не поддерживает history.pushState()или history.replaceState().

Обновление 2: текущая предварительная версия IE10 для платформы по- прежнему не поддерживает pushState / replaceState .

Обновление 3: Предварительная версия платформы 3 IE10 поддерживает API истории! Детали


На сегодняшний день в истории IE10 есть ошибка, делающая ее бесполезной, событие popstate не запускается. Подробности здесь: stackoverflow.com/questions/14698299/…
citykid

17

IE9 его не поддерживает.

Однако вы можете обойтись без Polyfill для получения функциональности - History.js https://github.com/browserstate/history.js .

Modernizr хорошо справляется с перечислением полифиллов HTML 5 здесь https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills .

Предостережение заключается в том, что он добавит строку запроса к вашему URL-адресу в браузерах, которые поддерживают только функции HTML 4.


что касается комментариев в приведенном выше вопросе, popstate не запускается в IE10
Мандип Джайн

History.js - хорошее решение, если вы должны поддерживать IE 9 или ниже, но он уменьшен до 23 КБ. Это много для поддержки нескольких методов.
Нил Монро


0

Кстати, вы можете получить такую ​​ошибку из-за абсолютного пути в pushState (). Когда я установил относительный путь, ошибка исчезла.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.