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.