Por que usar o IE = Edge compatível com X-UA ainda?

95

Eu fiz vários cursos online recentemente e ainda vejo alguns instrutores adicionando a seguinte metatag no topo de seus documentos por padrão:

<meta http-equiv="X-UA-Compatible" content="IE=edge">

O pensamento parece ser que isso é tão importante e útil quanto <meta charset="UTF-8">.

Mas por que?

De acordo com a documentação Modern.ie da Microsoft, é a "melhor prática" que "garante que o Internet Explorer use o mecanismo mais recente". Ok, é justo.

No entanto, se você seguir o diagrama de fluxo no MSDN, ele mostrará claramente que um documento sem as informações de `X-UA-Compatible é encaminhado para as preferências de" Visualização de Compatibilidade "do usuário e, se isso não for definido, siga a declaração! DOCTYPE .

Em outras palavras, a menos que o usuário tenha algumas configurações de Visualização de Compatibilidade em vigor, o IE apenas seguirá seu! DOCTYPE e usará o modo de padrões mais recente do seu navegador para renderizar de qualquer maneira ... Não há necessidade de X-UA-Compatible IE=Edgedeclaração.

Como diz o MSDN: " Use a declaração de tipo de documento HTML5 para habilitar o modo de borda ".

Então, em que circunstâncias é X-UA-Compatible IE=Edgenecessário?

Chuck Le Butt
fonte

Respostas:

152

Como aponta a resposta de @David, a menos que você esteja hospedando um site na zona "Intranet Local", há muito poucos motivos para incluir <meta http-equiv="X-UA-Compatible" content="IE=edge">em suas páginas e (de acordo com as recomendações de práticas recomendadas da Microsoft ) absolutamente nenhum motivo para incluí-lo no HTML. (Você deve colocá-lo na configuração do servidor ou nos cabeçalhos do site - não no próprio HTML.)

Se você está pensando em usar X-UA-Compatiblequalquer lugar em seu projeto, deve se lembrar que o Modo de Exibição de Compatibilidade afeta apenas o IE8, 9 e 10. Ele foi introduzido apenas no IE8 e foi desativado no IE11.

Esteja ciente também de que o IE11 é a única versão oficialmente compatível do IE no momento . Todas as versões mais antigas devem ser consideradas inseguras.

Se isso não foi motivo suficiente para convencê-lo a não usá-lo, considere que a Microsoft afirma que o IE8 e superior já são renderizados automaticamente no Modo Padrão quando um <!DOCTYPEestá presente , tornando-o ainda mais inútil.

Você pode ver por si mesmo o fluxo que o IE leva para decidir qual modo de documento usar:

insira a descrição da imagem aqui insira a descrição da imagem aqui

Como você pode ver, se nenhuma X-UA-Compatiblemeta tag ou cabeçalho HTTP estiver presente, ele verifica as configurações de "Exibição de compatibilidade" do usuário. Se o usuário não tiver nenhum para o seu site, o IE verifica a presença de uma <!DOCTYPEdeclaração. Se encontrar um, ele usa automaticamente o Modo de padrões mais recente (também conhecido como "EmulateIEx"). Caso contrário, ele reverte para o modo Quirks.

Ainda mais razões pelas quais você não deve usar a metatag "X-UA-Compatible" da própria Microsoft (grifo meu):

Quando o Internet Explorer encontra a marca META compatível com X-UA, ele é reiniciado usando o mecanismo da versão designada. Isso é um impacto no desempenho porque o navegador deve parar e reiniciar a análise do conteúdo.

Em outras palavras, retarda a renderização da página inicial

A diretiva X-UA-Compatible é uma ferramenta para permitir que os aplicativos funcionem na versão mais recente do Internet Explorer enquanto as atualizações são feitas no aplicativo .

Ele só foi projetado para uso temporário.

A prática recomendada é um cabeçalho HTTP compatível com X-UA . Adicionar a diretiva ao cabeçalho da resposta informa ao Internet Explorer qual mecanismo usar antes de iniciar a análise do conteúdo. Isso deve ser configurado no servidor do site.

Em outras palavras, existem maneiras melhores de implementar o Compatível com X-UA se você realmente precisar.

A partir de 12 de janeiro de 2016, apenas a versão mais atual do Internet Explorer disponível para um sistema operacional compatível receberá suporte técnico e atualizações de segurança. O Internet Explorer 11 é a última versão do Internet Explorer e continuará a receber atualizações de segurança, correções de compatibilidade e suporte técnico no Windows 7, Windows 8.1 e Windows 10 .

O IE11 é a única versão oficialmente compatível do IE .

O único motivo para incluir a X-UA-Compatiblemetatag em seu HTML foi substituir as configurações de "Exibição de compatibilidade" de um usuário no IE8, 9 e 10 para o seu site. Em quase todos os casos, o usuário não terá alterado essas configurações (por que mudaria?), E agora esses navegadores nem mesmo são mais suportados.

Resumindo: esta tag teve seu dia.

Chuck Le Butt
fonte
17
Esses fluxogramas são fantásticos.
bennettp123
9
Só uma observação, a partir de hoje (16/10/2015), é verdade que o botão compat no IE11 sumiu, mas ainda pode ser habilitado no menu Configurações, então ainda existe como uma possibilidade. Nós o usamos hoje porque nosso software baseado na web é usado em intranets corporativas que possuem sistemas legados que requerem o modo de compatibilidade para funcionar, então temos que contornar isso. Ótima dica sobre o cabeçalho HTTP, obrigado por isso!
Doug Johnson,
1
Como ainda é possível habilitar a visualização de compatibilidade no IE11 e os clientes corporativos estão fazendo isso, o cabeçalho / tag ainda é útil. Eu posso ver porque o cabeçalho HTTP é superior, mas se a tag está bem no início do DOM, pouco dano é feito, e apenas em navegadores que não começaram no modo Edge. Como uma provisão apenas para o usuário ocasional preso na visualização de compatibilidade, não acho que seja uma má prática usar a tag (logo no topo de <head>).
Tom Boutell de
2
@ChuckLeButt Ou seu administrador fez isso "para" eles via Política de Grupo. Ainda é muito importante em ambientes corporativos, onde tem sido a maior vitória para nós ter uma maneira de substituí-lo.
Tom Boutell
2
@ChuckLeButt Eu vejo seu ponto e não tenho o windows-fu para contradizê-lo ... e ainda, nosso cliente nos disse que tinha o IE11 no modo de compatibilidade em toda a linha; como eles conseguiram isso não era realmente um conhecimento compartilhado conosco. É possível que eles realmente o tivessem em uma lista explícita o tempo todo.
Tom Boutell em
18

Se o usuário estiver navegando em uma página localizada na zona "Intranet local" (como em uma intranet corporativa), a "visualização de compatibilidade" é ativada por padrão. Foi quando usei "X-UA-Compatible" para forçar o IE a usar o mecanismo mais recente.

David
fonte
Sim, parece um uso válido, mas nessa situação você provavelmente gostaria de colocá-lo na configuração do servidor ou nos cabeçalhos do site? stackoverflow.com/a/9338959/199700
Chuck Le Butt
1
Há também uma mudança causada em parte pelo fato de a Microsoft ter substituído um pouco o Modo de Exibição de Compatibilidade. Além da Intranet local, se um domínio tiver muitos subdomínios e aplicativos, adicionar o Modo de Exibição de Compatibilidade para um subdomínio aplica-o ao domínio INTEIRO agora (antes só se aplicava ao subdomínio específico). Portanto, se você tiver apenas um aplicativo que possa exigir, você deve fazer isso para todos os outros para evitar problemas de suporte.
kilkenny
@ChuckLeButt, cabeçalhos são bons, desde que você esteja na rede, mas se um usuário escolher salvar a página localmente, tudo o que resta são as <meta>tags incorporadas . É por isso que geralmente é uma boa prática replicar cabeçalhos importantes como <meta>tags também.
ravilov
1

Contanto que esteja definido como “Edge”, ele valida como HTML5, e me disseram que só faz com que o IE renderize novamente a página se o site já a estiver renderizando no modo de compatibilidade. Ainda assim, colocá-lo na configuração do servidor ( .htaccessetc.) é melhor do que colocar o HTML de cada página.

Michael McGinnis
fonte