Estou trabalhando para um cliente que força o modo de compatibilidade em todos os sites da intranet. Eu queria saber se existe uma tag que eu possa colocar no meu HTML que force o modo de compatibilidade.
Estou trabalhando para um cliente que força o modo de compatibilidade em todos os sites da intranet. Eu queria saber se existe uma tag que eu possa colocar no meu HTML que force o modo de compatibilidade.
Respostas:
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>My Web Page</title>
</head>
<body>
<p>Content goes here.</p>
</body>
</html>
Na página vinculada do MSDN:
O modo de borda informa ao Windows Internet Explorer para exibir o conteúdo no modo mais alto disponível, o que realmente quebra o paradigma de "bloqueio". Com o Internet Explorer 8, isso é equivalente ao modo IE8. Se uma versão futura (hipotética) do Internet Explorer suportasse um modo de compatibilidade mais alta, as páginas definidas no modo Edge apareceriam no modo mais alto suportado por essa versão; no entanto, essas mesmas páginas ainda apareceriam no modo IE8 quando exibidas no Internet Explorer 8.
No entanto, o modo "borda" não é incentivado no uso da produção:
É recomendável que os desenvolvedores da Web restrinjam o uso do modo Edge para testar páginas e outros usos que não sejam de produção, devido aos possíveis resultados inesperados da renderização do conteúdo da página em versões futuras do Windows Internet Explorer.
Sinceramente, não entendo completamente o porquê. Mas, de acordo com isso, o melhor caminho a seguir no momento é usar IE=8
.
IE=10
em seus próprios sites. Se você testou seu site no IE10 (versão de pré-visualização), é seguro usá-lo; caso contrário, você pode se manter IE=9
por enquanto.
Tools->Compatibility View Settings
e marcando Exibir todos os sites no modo de compatibilidade. Para corrigir o problema, eu tenho que voltar o cabeçalho na resposta HTTP:X-UA-Compatible: IE=edge
Após muitas horas solucionando problemas com esse material ... Aqui estão alguns destaques rápidos que nos ajudaram nos X-UA-Compatible
documentos: http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx#ctl00_contentContainer_ctl16
Usando <meta http-equiv="X-UA-Compatible" content=" _______ " />
Os modos Standard User Agent (os não emulados) ignoram as <!DOCTYPE>
diretivas da sua página e são renderizados com base nos padrões suportados por essa versão do IE (por exemplo, IE=8
obedecerão melhor ao espaçamento das bordas da tabela e a alguns pseudo-seletores IE=7
).
Visto que, os modos Emular dizem ao IE para seguir quaisquer <!DOCTYPE>
diretrizes em sua página, renderizando o modo padrões com base na versão escolhida e o modo peculiaresIE=5
Os valores possíveis para o content
atributo são:
content="IE=5"
content="IE=7"
content="IE=EmulateIE7"
content="IE=8"
content="IE=EmulateIE8"
content="IE=9"
content="IE=EmulateIE9"
content="IE=edge"
Se você estiver trabalhando com uma página na Zona da Intranet, poderá descobrir que o IE9, não importa o que faça, está entrando no modo Compatibilidade do IE7.
Isso ocorre devido à configuração nas configurações de compatibilidade do IE, que indica que todos os sites da Intranet devem ser executados no modo de compatibilidade. Você pode desmarcar isso por meio de uma política de grupo (ou simplesmente desmarcá-la no IE) ou pode definir o seguinte:
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
Isso funciona (conforme detalhado em outras respostas), mas pode não aparecer inicialmente: ele precisa vir antes que as folhas de estilo sejam declaradas . Caso contrário, será ignorado.
Eu acredito que isso fará o truque:
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
Conforme sugerido nesta resposta a uma pergunta relacionada, o modo "borda" pode ser definido no arquivo Web.Config. Isso o aplicará a todo o HTML retornado do aplicativo sem a necessidade de inseri-lo em páginas individuais:
<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-UA-Compatible" value="IE=edge" />
</customHeaders>
</httpProtocol>
</system.webServer>
</configuration>
Essa mesma etapa também pode ser realizada modificando os "Cabeçalhos de resposta HTTP" usando o Gerenciador do IIS para o servidor IIS, site inteiro ou aplicativos específicos.
A solução de metatag não estava funcionando para nós, mas a configuração no cabeçalho da resposta funcionou:
header('X-UA-Compatible: IE=edge,chrome=1');
chrome=1
propriedade stackoverflow.com/a/22059516/368691 . Lembre-se de que o Chrome Frame foi retirado. blog.chromium.org/2013/06/retiring-chrome-frame.html
Apenas mais algumas notas sobre esse tópico com base em minhas experiências recentes. A universidade em que trabalho para emitir laptops com o IE 8 está definida no modo de compatibilidade para todos os sites da intranet. Tentei adicionar a metatag para desativar esse modo nas páginas veiculadas pelo meu site, mas o IE ignorou essa tag de forma consistente. Como Lance mencionou em seu post, adicionar um cabeçalho de resposta corrigiu esse problema. É assim que eu defino o cabeçalho com base no método clichê HTML5:
<IfModule mod_headers.c>
Header set X-UA-Compatible "IE=edge,chrome=1"
# mod_headers can't match by content-type, but we don't want to send this header on *everything*...
<FilesMatch "\.(appcache|crx|css|eot|gif|htc|ico|jpe?g|js|m4a|m4v|manifest|mp4|oex|oga|ogg|ogv|otf|pdf|png|safariextz|svg|svgz|ttf|vcf|webm|webp|woff|xml|xpi)$">
Header unset X-UA-Compatible
</FilesMatch>
</IfModule>
Para que este cabeçalho seja realmente enviado, você precisa ter o mod_headers ativado no Apache. Se você quiser ter certeza de que este mod está ativado, coloque-o em uma página que possa executar o php:
<pre>
<?php
print_r(apache_get_modules());
?>
</pre>
O IE8 padroniza o modo de padrões para o intERnet e o modo de peculiaridades para o intRAnet. A metatag HTML é ignorada se você tiver o doctype definido como xhtml transitional. A solução é adicionar um cabeçalho HTTP no código. Isso funcionou para nós. Agora, o site da intranet está forçando o IE8 a renderizar o aplicativo no modo de padrões.
Adicionado ao PageInit da classe de página base (ASP.net C #):
Response.AddHeader("X-UA-Compatible", "IE=EmulateIE8");
referência: http://ilia.ws/archives/196-IE8-X-UA-Compatible-Rant.html
Isso ocorre devido à configuração nas configurações de compatibilidade do IE, que indica que todos os sites da Intranet devem ser executados no modo de compatibilidade. Você pode desmarcar isso por meio de uma política de grupo (ou simplesmente desmarcá-la no IE) ou pode definir o seguinte:
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
Aparentemente, não é possível alterar as configurações de exibição de compatibilidade como uma diretiva de grupo, mas é algo que talvez possa ser alterado no registro; essa metatag funciona bem para mim; tive que fazer o atributo necessário funcionar como parte de um formulário html , funcionou no chrome e no firefox, mas não no IE.
Aqui está um belo visual de quais navegadores suportam cada elemento html 5 individual.
Observe o denominador comum do Google Chrome, ele suporta tudo. Espero que isso ajude
Insira como o primeiro item sob a tag.
Isso força o IE a renderizar a página na versão física do IE e ignora a "Configuração do modo" do navegador. Isso pode ser definido nas ferramentas do desenvolvedor, tente alterá-lo para uma versão mais antiga do IE para testar, isso deve ser ignorado e a página deve ter a mesma aparência.
Se você tiver acesso ao servidor, a maneira mais confiável de fazer isso é fazê-lo no próprio servidor, no IIS. Acesse Cabeçalhos de resposta HTTP do IIS. Adicionar nome:
Valor compatível com X-UA : IE = edge Isso substituirá seu navegador e seu código.
Se você deseja que cada página da Web individual carregue o conteúdo escolhido e esteja usando asp.net. Basta aplicá-lo como a primeira tag abaixo da tag de cabeçalho em Views> shared> Layout.cshtml
apenas uma dica