O Internet Explorer suporta pushState e replaceState?


140

Alguém sabe se o Internet Explorer suporta os métodos history.pushState()e history.replaceState()para manipular o histórico do navegador ? Considerando que eles estão apenas sendo implementados no Firefox 4, não estou prendendo a respiração, mas alguém sabe se eles estão vindo no IE9?


3
Deprimente de fato se o IE9 não adiciona isso.
Eric Wahlforss

18
Pelo que vale a pena, o History.js fornece a mesma API HTML5 e, ao mesmo tempo, prejudica qualquer navegador que não seja compatível com ela (incluindo suporte para dados e títulos e a funcionalidade replaceState). Usar isso significaria que você não precisaria alterar seu código para as alterações no IE9.
balupton

2
Por outro lado, alguns argumentam contra o retorno a hashes. danwebb.net/2011/5/28/it-is-about-the-hashbangs
David Johnstone

1
@ CHiRiLo: Você precisa incluir uma referência ao jQuery . Esta é uma biblioteca javascript do Google que é amplamente usada e facilitará sua vida ao trabalhar com javascript em seus sites.
temor

5
O Google não é o principal desenvolvedor do jQuery (pode ter contribuído); ele o hospeda em sua CDN.
trojjer

Respostas:


196

Provavelmente, o melhor site para informações de compatibilidade do navegador é o CanIUse . Aqui está a seção sobre história .

Resumo - IE9: não , IE10: sim (a partir da visualização da plataforma 3)

O primeiro Release Candidate do IE9 (lançado em 10 de fevereiro de 2011) não suporta history.pushState ou history.replaceState. Geralmente, nenhum novo recurso é adicionado depois que um produto chega ao estágio RC, portanto, é muito improvável que o IE9 final suporte esses métodos.

A Microsoft tem uma boa visão geral para desenvolvedores dos recursos que o IE9 possui.

Atualização: O Internet Explorer 9 foi lançado (em 14 de março de 2011) e definitivamente não suporta history.pushState()ou history.replaceState().

Atualização 2: a versão atual da plataforma do IE10 ainda não suporta pushState / replaceState .

Atualização 3: a visualização da plataforma 3 do IE10 suporta a API de histórico! Detalhes


Atualmente, a história do IE10 apresenta um erro que o torna inútil, o evento popstate não é acionado. Detalhes aqui: stackoverflow.com/questions/14698299/…
citykid

17

O IE9 não suporta isso.

No entanto, você pode usar uma solução alternativa usando um Polyfill para obter a funcionalidade - History.js https://github.com/browserstate/history.js .

O Modernizr faz um bom trabalho listando os Polyfills HTML 5 aqui https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills .

A ressalva é que ela adicionará uma string de consulta ao seu URL em navegadores que suportam apenas recursos HTML 4.


como dos comentários na pergunta acima, popstate não dispara no IE10
Mandeep Jain

O History.js é uma boa solução se você deve oferecer suporte ao IE 9 ou inferior, mas com 23 KB, minificado. Isso é muito apenas para apoiar alguns métodos.
Neil Monroe


0

Aliás, você pode obter esse erro em razão do caminho absoluto em pushState (). Quando eu defino o caminho relativo, o erro desapareceu.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.