X-UA-Compatible está definido como IE = edge, mas ainda não pára o modo de compatibilidade

Estou muito confuso. Eu deveria ser capaz de definir

 

e IE8 e IE9 devem renderizar a página usando o mecanismo de renderização mais recente. No entanto, eu acabei de testá-lo, e se o Modo de Compatibilidade estiver ativado em outro lugar em nosso site, ele permanecerá em nossa página , mesmo que devamos estar forçando-o a não fazê-lo.

Como você deve ter certeza de que o IE não usa o Modo de Compatibilidade (mesmo em uma intranet)?

FWIW, estou usando a declaração DocType HTML5 ( ).

Aqui estão as primeiras linhas da página:

       <!--    

EDIT: Acabei de saber que a configuração padrão no IE8 é usar o modo de compatibilidade do IE7 para sites de intranet. Isso replaceia a meta tag X-UA-Compatible?

Se você precisar replace as Configurações de Exibição de Compatibilidade do IE para sites da intranet, poderá fazê-lo no web.config (IIS7) ou nos headers HTTP personalizados nas propriedades do site (IIS6) e configurar o X-UA-Compatible lá. A metatag não substitui a configuração de intranet do IE nas Configurações de Exibição de Compatibilidade, mas se você a definir no servidor de hospedagem, ela replaceá a compatibilidade.

Exemplo para web.config no IIS7:

        

Edit : eu removi o código clear de apenas antes do add ; foi uma supervisão desnecessária de copiar e colar. Boa captura, comentadores!

A solução do lado do servidor é a recomendada, como proposto por @TimmyFranks em sua resposta, mas se for necessário implementar a regra X-UA-Compatible no nível da página, leia as dicas a seguir, para se beneficiar da experiência de quem já foi queimado


A meta tag X-UA-Compatible deve aparecer logo após o título no elemento . Nenhuma outra metatags, links css e chamadas de scripts js podem ser colocados antes dela.

  Site Title        

Se houver comentários condicionais na página (digamos, localizados no ), eles devem ser colocados abaixo do .

 // DON'T: place class inside the HTML tag    // DO: place the class inside the BODY tag    

A equipe do Html5BoilerPlate escreveu sobre esse bug – http://h5bp.com/i/378 Eles têm várias soluções.

Com relação à visão de Intranet e Compatibilidade, há configurações quando você acessa as ferramentas> Configurações de exibição de compatibilidade.

Configurações de exibição de compatibilidade

Note que se você está servindo a partir do PHP, você pode usar o seguinte código para corrigi-lo também.

 header("X-UA-Compatible: IE=Edge"); 

Acontece que isso tem a ver com a escolha “inteligente” da Microsoft para forçar todos os sites da intranet a entrarem no modo de compatibilidade, mesmo que o X-UA-Compatible esteja definido como IE=edge .

Eu também tenho o mesmo problema de renderização do IE9 nos padrões do documento IE7 para o host local. Eu tentei muitas tags de comentários condicionais, mas sem sucesso. No final acabei de remover todas as tags condicionais e apenas adicionei meta tag imediatamente após a cabeça como abaixo e funcionou como charme.

   

Espero que ajude

Mesmo que você tenha desmarcado a opção “Exibir sites da intranet no Modo de Exibição de Compatibilidade” e tenha o X-UA-Compatível nos headers de resposta, existe outro motivo pelo qual o seu navegador pode usar o padrão “Modo de Exibição de Compatibilidade” – sua Diretiva de Grupo. Olhe para o seu console para a seguinte mensagem:

HTML1203: xxx.xxx foi configurado para ser executado no Modo de Exibição de Compatibilidade por meio da Política de Grupo.

Onde xxx.xxx é o domínio do seu site (ou seja, test.com). Se você vir isso, a política de grupo do seu domínio será definida para que qualquer site terminado em test.com seja processado automaticamente no modo Compatibilidade, independentemente do tipo de documento, dos headers etc.

Para obter mais informações, consulte o seguinte link (explica os códigos html): http://msdn.microsoft.com/en-us/library/ie/hh180764(v=vs.85).aspx

Como o NEOSWF aponta acima, os comentários condicionais de Paul Irish impedem que a metatag tenha algum efeito.

Há várias correções todas aqui ( http://nicolasgallagher.com/better-conditional-classnames-for-hack-free-css/ )

Esses incluem:

Adicionando duas classs HTML, usando headers de servidor e adicionando um comentário condicional acima do doctype.

No meu último projeto, decidi remover os comentários condicionais de Paul Irish. Eu não gostei da idéia de adicionar nada antes do HTML sem fazer MUITOS testes antes e é bom ver o que foi definido apenas olhando para o HTML.

No final, eu rodei um div logo depois do corpo e usei comentários condicionais, por exemplo

   ... regular body stuff  

Eu poderia ter feito isso ao redor do corpo, mas é mais difícil com CMSs como o WordPress.

Obviamente, é outro DIV dentro da marcação, mas é apenas para navegadores mais antigos.

Eu acho que poderia ser uma decisão por projeto.

Eu também li algo sobre a meta tag charset precisando vir nos primeiros 1024 bytes, então isso garante isso.

Às vezes, as mais simples e fáceis de ler são as melhores e definitivamente vale a pena pensar! Graças ao sexto comentário no link acima para apontar isso.

X-UA-Compatible replaceá apenas o Modo de Documento, não o Modo de Navegador, e não funcionará para todos os sites de intranet; Se esse for o seu caso, a melhor solução é desabilitar “Exibir sites de intranet no Modo de Exibição de Compatibilidade” e definir uma configuração de política de grupo para especificar quais sites de intranet precisam de modo de compatibilidade.

Eu adicionei o seguinte ao meu arquivo htaccess, que fez o truque:

 BrowserMatch MSIE ie Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie 

Além disso, o X-UA-Compatible deve ser a primeira meta tag na seção head

    

By the way, a ordem correta ou as marcas principais são:

    Site Title   

Deste jeito

  1. nós configuramos o mecanismo de renderização para usar antes de o IExplorer começar a processar
  2. o documento, em seguida, definir a codificação para usar para todo o navegador
  3. então nós imprimimos o título, que será processado com a codificação já definida.

Para o Nginx,

 add_header "X-UA-Compatible" "IE=Edge,chrome=1"; 

ref: https://github.com/h5bp/server-configs/commit/a5b0a8f736d68f7de27cdcb202e32975a74bd2c5

Timmy Franks tinha razão para mim. Acabamos de ter o problema hoje, onde o cliente tinha o IE8 em toda a empresa, e isso estava forçando o site que escrevemos para sua intranet em modo de compatibilidade. A configuração “IE-Edge” pareceu corrigir isso.

       

O IE 11 não permite mais que você altere a configuração de visualização de compatibilidade do navegador enviando o header …

  

Parece que a única maneira de forçar o navegador a não usar a visão de compatibilidade é fazer com que o usuário a desative em seu navegador. O nosso é um site de Intranet e a opção padrão do IE é usar a visualização de compatibilidade para sites da Intranet. Que dor!

Conseguimos evitar a necessidade de o usuário alterar as configurações do navegador para os usuários do IE 9 e 10, mas ele não funciona mais no IE 11. Nossos usuários do IE estão migrando para o Chrome, onde isso não é um problema, e nunca fui.

Consegui contornar este carregamento dos headers antes do HTML com php, e funcionou muito bem.

 < ?php header( 'X-UA-Compatible: IE=edge,chrome=1' ); header( 'content: width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no' ); include('ix.html'); ?> 

ix.html é o conteúdo que eu queria carregar depois de enviar os headers.

Eu tive o mesmo problema depois de tentar muitas combinações Eu tinha esta nota de trabalho Eu tenho compatibilidade verificada para intranet

 < !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">    

Se você estiver usando a pilha LAMP, adicione-a ao arquivo .htaccess na pasta raiz da web. Não há necessidade de adicioná-lo a todos os arquivos PHP.

  Header add X-UA-Compatible "IE=Edge"  

Eu estava passando pelo mesmo problema no IE11. Nenhuma dessas respostas resolveu meu problema. Depois de cavar um pouco, notei que o navegador estava sendo executado no modo Enterprise . (verifique pressionando F12 e clique na guia de emulação, procure o menu suspenso do perfil do navegador) A configuração foi bloqueada, não permitindo que eu altere a configuração.

Consegui alterar o perfil para Desktop depois de excluir CurrentVersion da seguinte chave de registro:

 HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Main\EnterpriseMode 

Depois de alterar o modo para o Desktop, as respostas nesta postagem funcionarão.

Quando o seu navegador é aberto com os Modos de Compatibilidade, até você remove e desativa todas as configurações de modos de compabilidade do seu navegador da Web e do Editor de Diretiva de Grupo Local, você pode tentar desativar a chave de registro.

Isso também acontece comigo ao usar domínio e subdomínio para conectar o lado do servidor. A máquina é restrita para abrir no modo de compatibilidade para todos os subdomínios.

DESATIVAR MODO DE COMPABILIDADE PARA INTRANET

HKEY_LOCAL_MACHINE – SOFTWARE – Políticas – Microsoft – Internet Explorer – BrowserEmulation -> IntranetCompalityMode O valor deve ser 0 (zero) . E também remover o nome de domínio existente do PolicyList.

Caso contrário, você pode adicionar um novo valor (DWORD) que contenha dados de valor 0 (zero) .