Estou bastante confuso. Eu deveria poder definir
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
e IE8 e IE9 devem renderizar a página usando o mecanismo de renderização mais recente. No entanto, acabei de testá-lo e, se o Modo de compatibilidade estiver ativado em outro lugar do site, ele permanecerá ativo em nossa página , mesmo que devamos forçá-lo a não fazê-lo.
Como você deve garantir que o IE não use o Modo de Compatibilidade (mesmo em uma intranet)?
FWIW, estou usando a declaração HTML5 DocType ( <!doctype html>
).
Aqui estão as primeiras linhas da página:
<!doctype html>
<!--[if lt IE 7 ]> <html lang="en" class="innerpage no-js ie6"> <![endif]-->
<!--[if IE 7 ]> <html lang="en" class="innerpage no-js ie7"> <![endif]-->
<!--[if IE 8 ]> <html lang="en" class="innerpage no-js ie8"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!-->
<html lang="en" class="innerpage no-js">
<!--<![endif]-->
<head>
<meta charset="ISO-8859-1" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
EDIT: Acabei de saber que a configuração padrão no IE8 é usar o modo de compatibilidade do IE7 para sites da intranet. Isso substituiria a metatag compatível com X-UA?
Respostas:
Se você precisar substituir as configurações de exibição de compatibilidade do IE para sites da intranet, faça isso no web.config (IIS7) ou nos cabeçalhos HTTP personalizados nas propriedades do site (IIS6) e defina X-UA-Compatible lá. A metatag não substitui a configuração da intranet do IE em Configurações de exibição de compatibilidade, mas se você a configurar no servidor de hospedagem, a compatibilidade será substituída.
Exemplo para web.config no IIS7:
Edit : Eu removi o
clear
código imediatamente antes doadd
; foi uma supervisão desnecessária de copiar e colar. Boa captura, comentaristas!fonte
<clear />
? Quais cabeçalhos personalizados são limpos por isso?<urlCompression...>
regra pelo menos para mim. Essa regra faz gzipping, o que eu quero, então comentei claramente. Qualquer informação adicional seria adorável.<?php header('X-UA-Compatible: IE=edge'); ?>
A solução do lado do servidor é a recomendada, como o @TimmyFranks propôs em sua resposta, mas se for necessário implementar a
X-UA-Compatible
regra no nível da página, leia as dicas a seguir, para aproveitar a experiência de quem já se queimouA
X-UA-Compatible
metatag deve aparecer logo após o título no<head>
elemento. Nenhuma outra metatag, links css e chamadas js scripts podem ser colocadas antes dele.Se houver algum comentário condicional na página (digamos localizado na
<html>
), eles deverão ser colocados em, após o<head>
.A equipe do Html5BoilerPlate escreveu sobre esse bug - http://h5bp.com/i/378 Eles têm várias soluções.
Em relação à exibição Intranet e compatibilidade, há configurações quando você acessa Ferramentas> Configurações da exibição Compatibilidade.
fonte
X-UA-Compatible
deve aparecer o mais cedo possível, provavelmente depoischarset
. Eu não acho que é verdade que "deve aparecer logo após o título".X-UA-Compatible
meta tag pode aparecer depoistitle
,base
e quaisquer outros meta tags sem perder seu efeito. Isto é o que eu testei no IE8. Porém, nenhum comentário condicional pode ser colocado antes dele.Observe que, se você estiver servindo a partir do PHP, também poderá usar o código a seguir para corrigi-lo.
fonte
<!--[if lt IE 7 ]> <html>...
! OBRIGADO! Você é Deus enviado !!Como se vê, isso tem a ver com a opção "inteligente" da Microsoft para fazer com que todos os sites da intranet sejam forçados ao modo de compatibilidade, mesmo que
X-UA-Compatible
esteja definido comoIE=edge
.fonte
Também obtive o mesmo problema da renderização do IE9 nos padrões de documentos do IE7 para host local. Tentei muitas tags de comentários condicionais, mas sem êxito. No final, eu apenas removi todas as tags condicionais e adicionei a meta tag imediatamente após a cabeça, como abaixo, e funcionou como um encanto.
Espero que ajude
fonte
Mesmo se você desmarcou a opção "Exibir sites da intranet no modo de exibição de compatibilidade" e tem o X-UA-Compatible em seus cabeçalhos de resposta, há outro motivo pelo qual seu navegador pode ter como padrão o "Modo de exibição de compatibilidade" de qualquer maneira - sua Política de Grupo. Veja no seu console a seguinte mensagem:
Onde xxx.xxx é o domínio do seu site (por exemplo, test.com). Se você vir isso, a política de grupo do seu domínio será definida para que qualquer site que termine em test.com seja renderizado automaticamente no modo de compatibilidade, independentemente do tipo de documento, cabeçalhos 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
fonte
Como o NEOSWF aponta acima, os comentários condicionais de Paul Irish impedem que a metatag tenha qualquer efeito.
Existem várias correções aqui ( http://nicolasgallagher.com/better-conditional-classnames-for-hack-free-css/ )
Esses incluem:
Adicionando duas classes HTML, usando cabeçalhos de servidor e adicionando um comentário condicional acima do doctype.
No meu projeto mais recente, 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 primeiro e é bom ver o que foi definido apenas olhando o HTML.
No final, envolvi uma div logo após o corpo e usei comentários condicionais, por exemplo
Eu poderia ter feito isso em todo o 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 com base.
Também li algo sobre a metatag charset que precisa aparecer nos primeiros 1024 bytes, para garantir isso.
Às vezes, as idéias mais simples e fáceis de ler são as melhores e definitivamente vale a pena pensar! Obrigado ao sexto comentário no link acima por apontar isso.
fonte
X-UA-Compatible
substituirá apenas o Modo Documento, não o Modo Navegador, e não funcionará em todos os sites da intranet; se esse for o seu caso, a melhor solução é desabilitar "Exibir sites da intranet no Modo de Exibição Compatível" e definir uma configuração de diretiva de grupo para especificar quais sites da intranet precisam do modo de compatibilidade.fonte
Adicionei o seguinte ao meu arquivo htaccess, que fez o truque:
fonte
Além disso, X-UA-Compatible deve ser a primeira metatag na seção head
A propósito, a ordem correta ou as principais tags de cabeçalho são:
Deste jeito
fonte
Timmy Franks acertou em mim. Hoje tivemos o problema de hoje em que o cliente tinha o IE8 em toda a empresa e estava forçando o site que escrevemos para a intranet para o modo de compatibilidade. Definir "IE-Edge" pareceu corrigi-lo.
fonte
Para Nginx,
ref: https://github.com/h5bp/server-configs/commit/a5b0a8f736d68f7de27cdcb202e32975a74bd2c5
fonte
O IE 11 não permite que você substitua mais a configuração de exibição de compatibilidade do navegador enviando o cabeçalho ...
Parece que a única maneira de forçar o navegador a não usar a exibição de compatibilidade é fazer com que o usuário o desative no navegador. O nosso é um site da Intranet, e a opção padrão do IE é usar a exibição de compatibilidade para sites da Intranet. Que dor!
Conseguimos impedir a necessidade de o usuário alterar as configurações do navegador para 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 ocorreu. fui.
fonte
IE11
não suporta outros modos de compatibilidade que não sejamedge
. Link para a documentação oficial . Isso significa que não precisamos mais usar essa metatag para ocultar o botão CM na barra de endereço.Eu era capaz de contornar isso carregando os cabeçalhos antes do HTML com php, e funcionou muito bem.
ix.html é o conteúdo que eu queria carregar depois de enviar os cabeçalhos.
fonte
Eu estava enfrentando o 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 emulação, procure o menu suspenso do perfil do navegador). A configuração estava bloqueada, não me permitindo alterar a configuração.
Consegui alterar o perfil para a área de trabalho após excluir o CurrentVersion da seguinte chave do Registro:
Depois de alterar o modo para a área de trabalho, as respostas nesta postagem funcionarão.
fonte
Quando o navegador é aberto com os Modos de compatibilidade, mesmo que você remova e desative todas as configurações dos modos de compactação do navegador da Web e do Editor de Diretiva de Grupo Local, tente desativar a chave de registro.
Isso também aconteceu comigo ao usar o domínio e o subdomínio para conectar-se ao lado do servidor. A máquina está restrita a abrir no modo de compabilidade para todos os subdomínios.
DESATIVAR O MODO DE COMPABILIDADE PARA INTRANET
HKEY_LOCAL_MACHINE - SOFTWARE - Diretivas - Microsoft - Internet Explorer - Emulação do navegador -> O valor IntranetCompalityMode deve ser 0 (zero) . E também remova o nome de domínio existente do PolicyList.
Caso contrário, você pode adicionar um novo valor (DWORD) que contenha 0 (zero) dados de valor.
fonte
Eu tive o mesmo problema depois de tentar várias combinações. Esta nota de trabalho foi verificada quanto à compatibilidade na intranet.
fonte
Se você estiver usando a pilha LAMP, adicione-a ao seu arquivo .htaccess na pasta raiz da web. Não há necessidade de adicioná-lo a todos os arquivos PHP.
fonte