Чи підтримує Internet Explorer функцію pushState та заменуState?


140

Хтось знає, чи підтримує Internet Explorer history.pushState()і history.replaceState()методи обробки історії браузера ? Зважаючи на те, що вони просто впроваджені у Firefox 4, я не затримую дихання, але хтось знає, чи приходять вони в IE9?


3
Пригнічуючи насправді, якщо IE9 цього не додає.
Ерік Уолфорсс

18
Чому варто History.js надає той самий API HTML5, при цьому виграшно принижуючи будь-який веб-переглядач, який не підтримує його (включаючи підтримку даних і назв та функцію substituState). Використання цього означає, що вам не доведеться змінювати код для змін IE9.
балуптон

2
З іншого боку, деякі заперечують проти того, щоб повернутися до хешей. danwebb.net/2011/5/28/it-is-about-the-hashbangs
Девід Джонстоун

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

5
Google не є основним розробником для jQuery (це може сприяти); він хостить його на своєму CDN, хоча.
trojjer

Відповіді:


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 / substituState .

Оновлення 3: Попередній перегляд платформи 3 IE10 підтримує API історії! Деталі


На сьогоднішній день в історії IE10 є помилка, що робить її марною, попстати подія не спрацьовує. Подробиці тут: stackoverflow.com/questions/14698299 / ...
citykid

17

IE9 не підтримує його.

Однак ви можете використовувати обхід, використовуючи Polyfill, щоб отримати функціональність - History.js https://github.com/browserstate/history.js .

Modernizr зробив хорошу роботу, перелічивши HTML 5 Polyfills тут 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.