O IE10 é renderizado no modo IE7. Como forçar o modo Standards?

Respostas:

244

O Internet Explorer supõe que a maioria das páginas da Web foi gravada para atingir versões anteriores do IE e analisa o tipo de documento, as metatags e o HTML para determinar o melhor modo de compatibilidade (às vezes incorretamente). Mesmo com um doctype HTML5, o IE ainda colocará seu site no modo de compatibilidade, se for um site de intranet.

Para garantir que seu site sempre use o modo de padrões mais recentes, verifique se Display intranet sites in Compatiblyestá desativado. No entanto, você deve fazer isso em cada máquina local do servidor da Web (as instruções estão abaixo).

Como alternativa, e melhor ainda, você pode usar o X-UA-Compatiblecabeçalho para desativar isso no servidor. É importante observar que o uso da metatag não funcionará!

<!-- Doesn't always work! -->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />

No MSDN, é mencionado que o uso de um cabeçalho de host ou uma metatag deve substituir até mesmo sites da intranet. O artigo Noções básicas sobre modos de compatibilidade no Internet Explorer 8 diz o seguinte.

Um grande número de sites internos da empresa é otimizado para o Internet Explorer 7, portanto, essa exceção padrão preserva essa compatibilidade. ... Novamente, se uma meta tag ou cabeçalho http for usada para definir um modo de compatibilidade com o documento, essas configurações serão substituídas.

No entanto, na prática, isso não funcionará, o uso de um cabeçalho de host é a única opção que funciona. A seção de comentários do artigo também mostra vários exemplos desse problema exato.

O uso de uma meta tag também apresenta vários outros problemas, como ignorar a tag se ela não estiver diretamente abaixo da <head>tag ou se houver muitos dados antes (4k). Também pode acionar a correção do documento em algumas versões do IE, o que atrasará a renderização. Você pode ler mais sobre esses problemas no artigo do MSDN Best Practice: Get your HEAD or order .

Adicionando o cabeçalho X-UA-Compatible

Se você estiver usando .NET e IIS, poderá adicioná-lo ao web.config, também poderá fazer isso programaticamente:

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="X-UA-Compatible" value="IE=edge" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

Se você não estiver usando o IIS, é fácil fazer isso em qualquer idioma. Por exemplo, veja como fazê-lo no PHP:

header('X-UA-Compatible: IE=edge');

Enquanto o X-UA-Compatiblecabeçalho estiver presente com o doctype HTML5, um site sempre será executado no modo de padrões mais recentes.

Desativando o Modo de Exibição de Compatibilidade
Ainda pode ser útil desativar o Modo de Exibição de Compatibilidade. Para fazer isso, desmarque Display all intranet sites in compatibility viewas configurações do modo de exibição de compatibilidade.

Configurações de exibição de compatibilidade

Você pode mostrar isso pressionando Altpara obter o menu.

insira a descrição da imagem aqui

Editar Esta resposta também se refere ao IE9.

Daniel Little
fonte
Perdoe minha ignorância, mas como chegar a esta folha de configurações? Eu verifiquei as configurações do Internet Explorer, cliquei com o botão direito do mouse na exibição de compatibilidade na barra de endereços - nada.
Firedev 8/11
2
Uso @ Nick altpara abrir a barra de ferramentas, é em Ferramentas -> configurações de exibição compat
Daniel Little
Oh obrigado, parece que isso resolveu. Surpreende-se por que eles fizeram isso.
firedev 9/11/12
25
+1000;). O SO deve forçar todo OP a ver essa resposta, quando tiverem uma tag [IE] e uma palavra "compatível" em sua pergunta, mesmo antes de postá-la.
Teemu
2
Tentei adicionar a seção de cabeçalhos personalizados ao web.config do projeto. Parece que a configuração não substitui a configuração do IE para o uso da exibição de compatibilidade para sites da intranet.
DomenicDatti
25

Isso funciona para mim ..

<meta http-equiv="X-UA-Compatible" content="IE=edge" />
JGilmartin
fonte
11
NB, como Lavinski diz acima, "a metatag não faz nada para sites da intranet".
Nathan
2
Quanto vale a pena, para um site hospedado (site que não é da intranet) que possui a X-UA-Compatiblemetatag, mas ainda não está ativando o modo de documento IE10 Standards como padrão da página, descobri que, se a metatag estiver localizada abaixo das tags de script ou apenas muito longe do topo da <head>árvore do DOM, o IE10 chora e define o modo de documento como padrões do IE8. Portanto, mantenha sua IE=edgemeta tag próxima à <title>tag. Nem sempre é uma correção simples para sites do Wordpress quando não está codificado no arquivo de modelo de cabeçalho. Não tenho certeza se o IE11 se importa com a meta tag, mas espero que isso seja útil para alguém.
Purefusion
1
Para cópias ocultas e trocas como eu, falta a tag de fechamento. . <meta http-equiv = "Compatível com X-UA" content = "IE = edge"> </meta>
John Newman
Você só precisa fechar a metatag se estiver usando o tipo de documento XHTML
Andy Brudtkuhl
2
Também essa tag precisa ser a primeira tag dentro de <head> #
Chris Gunawardena
10

Tente adicionar a seguinte tag na cabeça

<meta http-equiv="X-UA-Compatible" content="IE=11,IE=10,IE=9,IE=8" />
Jeow Li Huan
fonte
5
Isso deve ser IE=Edgeem vez
Daniel Little
1
Mas há um risco de que as futuras versões do IE faz algo ruim e quebra seu site
Jeow Li Huan
7
Não, isso não é um risco, se você seguir as especificações, não verá pessoas fazendo isso no Chrome.
Daniel Little
1
Essa tag precisa ser a primeira tag dentro de <head> #
Chris Gunawardena
1
A edição desta resposta demonstra por que essa não é uma boa ideia. A resposta aceita é a melhor solução.
David Granado
2

A metatag não faz nada nos sites da intranet e meu problema foi a renderização do IE10 no modo de compatibilidade do IE10. O que resolveu o problema para mim foi levar a resposta de @ Jeow ainda mais e usar esse valor em um cabeçalho http, adicionando o seguinte ao web.configIIS:

<system.webServer>
  <httpProtocol> 
    <customHeaders> 
      <clear />
      <!-- <add name="X-UA-Compatible" value="IE=edge" /> not good enough -->
      <add name="X-UA-Compatible" value="IE=11,IE=10,IE=9,IE=8" /> 
    </customHeaders> 
  </httpProtocol>
</system.webServer>

Para fins do IE, os sites da intranet incluem sites voltados ao público que não são roteados para o exterior - por exemplo, um funcionário do Stackoverflow que trabalha no escritório provavelmente veria o stackoverflow.com no modo de compatibilidade.

ov
fonte
1

Funcionou perfeitamente para mim quando fiz o seguinte:

Em http://msdn.microsoft.com/en-us/library/gg699338(v=vs.85).aspx

Usaram o exemplo exato que eles fornecem na primeira caixa (adicionou o número ausente </html> na parte inferior), abriu-a no IE10 e os padrões foram forçados; acho que você pode precisar de conteúdo real no html para forçar os padrões, mas não tenho certeza.

Minha sugestão seria substituir seu código vazio pelo conteúdo real (algo simples) e ver o que ele faz.

ZacNespral21
fonte