Поддерживает ли 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 истории! Детали

dave1010
источник
На сегодняшний день в истории 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

В Internet Explorer 10 реализована поддержка интерфейса истории проекта спецификации HTML5, который включает методы, позволяющие управлять стеком истории сайта и URL-адресом.

Исходная ссылка: https://msdn.microsoft.com/en-us/library/ie/hh920758(v=vs.85).aspx

QC-гепард
источник
0

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

f0rmat1k
источник