Por padrão, o IE8 força os sites da intranet a entrar no modo de compatibilidade. Tentei alterar o cabeçalho da meta para IE8, mas ele não reconhece o cabeçalho da meta e apenas usa a configuração do navegador. Alguém sabe como desativar isso?
200
Respostas:
É possível substituir o modo de compatibilidade na intranet.
Para o IIS, basta adicionar o código abaixo ao web.config. Trabalhou para mim com o IE9.
Equivalente para Apache:
E para nginx:
E para express.js:
fonte
Michael Irigoyen está correto, mas é um pouco mais complicado ...
se você estiver usando o maravilhoso boilerplate de Paul Irish, terá algo como o seguinte: -
Isso NÃO funcionará conforme o esperado e forçará o IE a entrar no modo de compatibilidade em um ambiente da Intranet se você tiver marcado "Exibir sites da intranet na exibição de compatibilidade". Você precisa remover os comentários condicionais do IE para impedir o modo de compatibilidade da Intranet.
Portanto, o seguinte código funcionará:
Basicamente, se você acionar comentários condicionais do IE antes da
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
instrução, será forçado a entrar no modo de compatibilidade em um ambiente da Intranet , se estiver executando o IE9 com as configurações padrão.ATUALIZAÇÃO - INFORMAÇÕES ADICIONAIS: Mas observe que há um truque que fará o modelo HTML5 funcionar:
Adicione um comentário vazio e condicional antes do DOCTYPE. E observe também que, ao fazer isso , você também pode adicionar comentários condicionais em torno da
X-UA-Compatible
diretiva, tornando a página HTML5 válida também. Então, por exemplo:Uma postagem de blog inspirada na primeira parte desta resposta tem mais detalhes. E a propósito: Como mencionado nesse post, também se pode substituir o comentário condicional antes do DOCTYPE com um condicional semi comentário com nenhuma condição :
<!--[]-->
. Assim, assim:Mas observe que a última variante (
<--[]--><!DOCTYPE html>
), como explicado, por exemplo, por esta resposta a outra pergunta , ativará o problema bem conhecido de que ele - para versões herdadas do IE sem suporte para oX-UA-Compatioble
(leia-se: para IE7 e IE6) - coloca o navegador em modo peculiar.fonte
Se você abrir o menu "Ferramentas" e escolher "Configurações de exibição de compatibilidade" Na caixa de diálogo na parte inferior, há uma configuração "Exibir sites da intranet no modo de compatibilidade". Se você desmarcar isso, deve resolver o problema e o IE usará o modo com base no DOCTYPE.
fonte
Há uma certa confusão nas respostas a esta pergunta.
A resposta principal é atualmente uma solução do lado do servidor que define um sinalizador no cabeçalho http e alguns comentários indicam que uma solução usando uma metatag simplesmente não funciona.
Acho que esta entrada de blog fornece uma boa visão geral de como usar as meta informações de compatibilidade e, em minha experiência, funciona conforme descrito: http://blogs.msdn.com/b/cjacks/archive/2012/02/29/using-x- ua-compatible-to-create-durable-enterprise-web-applications.aspx
Os pontos principais:
Um ponto importante (e acho que muita confusão vem desse ponto) é que o IE tem duas "classes" de modos:
O modo de documento determina o mecanismo de renderização (como a página da web é renderizada).
O Modo Navegador determina qual sequência de caracteres do User-Agent (UA) que o IE envia aos servidores, para qual padrão o Document IE e como o IE avalia os Comentários Condicionais.
Mais informações sobre o modo de documento x modo de navegador podem ser encontradas neste artigo: http://blogs.msdn.com/b/ie/archive/2010/06/16/ie-s-compatibility-features-for- site-developers.aspx? Redirecionado = true
Na minha experiência, os metadados de compatibilidade influenciarão apenas o modo de documento . Portanto, se você está confiando na detecção do navegador, isso não ajuda. Mas se você estiver usando a detecção de recursos, esse deve ser o caminho a seguir.
Então, eu recomendaria o uso da metatag (na página html) usando esta sintaxe:
Aviso: forneça uma lista dos modos de navegador que você testou.
A postagem do blog também aconselha contra o uso do EmulateIEX. Aqui está uma citação:
fonte
Tente este metatag:
Ele deve forçar o IE8 a renderizar como modo padrão do IE8, mesmo que a opção "Exibir sites da intranet no modo de compatibilidade" esteja marcada [na intranet ou em todos os sites], tentei por conta própria no IE 8.0.6
fonte
O administrador do sistema resolveu esse problema desmarcando a caixa globalmente para nossa organização. Os usuários nem precisavam fazer logoff.
fonte
Encontrei uma resposta funcional que permite substituir o Modo de Exibição de Compatibilidade da Intranet verificado. Basta adicionar no evento OnInit da sua página esta linha (nenhuma meta ou web.config customHeader precisa):
fonte
Tente colocar o seguinte no cabeçalho:
Cortesia de Paul Irish em HTML5 Boilerplate (mas também funciona em XHTML Transitional).
fonte
Consegui substituir o modo de compatibilidade especificando a metatag como A PRIMEIRA ETIQUETA seção na cabeça, não apenas a primeira metatag, mas como e somente a MUITO PRIMEIRA ETIQUETA .
Agradeço ao @ stefan.s por me colocar na sua excelente resposta. Antes de ler, eu tinha:
ISTO NÃO FUNCIONOU
moveu a tag link para fora do caminho e funcionou
ISSO FUNCIONA :
Portanto, um cliente do IE8 configurado para usar a compatibilidade renderiza a página no modo Padrão do IE8 - o conteúdo = 'IE = 9' significa usar o padrão mais alto disponível até o IE9, inclusive.
fonte
Esta não é exatamente uma solução, mas acho que é a melhor. Nos sites da intranet, dizemos às pessoas que ele só pode ser acessado pelo Firefox; não aceitamos os usuários do IE por aqui. Verifique o agente do usuário no lado do servidor ou cliente e negue-lhes acesso a partir do IE. E eu sou um programador .NET.
fonte
Eu tinha lutado com esse problema e queria ajudar a fornecer uma solução e uma visão únicas.
Certas estruturas baseadas em AJAX injetam javascripts e folhas de estilo no início do
<head>
e isso parece impedir a solução bem estabelecida de meta tag de funcionar corretamente. Nesse caso, descobri que a injeção direta no cabeçalho de resposta HTTP, bem como a resposta de Andras Csehi, resolverá o problema.No entanto, para aqueles que usam Java Servlets, uma boa maneira de resolver isso é usar um ServletFilter.
fonte
Podemos resolver esse problema no ambiente Spring-Apache-tomcat adicionando uma única linha no método RequestInterceptor -
Referência de - Como criar filtro e modificar cabeçalho de resposta Ele aborda como podemos resolver esse problema através de um RequestInterceptor (Spring).
fonte
Se você deseja que seu site force o modo de padrões do IE 8, use esse metatag junto com um DOCTYPE válido:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />
Observe o valor "EmulateIE8" em vez do simples "IE8".
De acordo com os desenvolvedores do IE, isso deve: "Exibir DOCTYPEs de padrões no modo de padrões do IE8; Exibir quirks DOCTYPEs no modo de quirks. Use essa tag para substituir a exibição de compatibilidade em máquinas clientes e forçar os padrões aos padrões do IE8".
mais informações sobre esta postagem no blog do IE: http://blogs.msdn.com/b/ie/archive/2008/08/27/introducing-compatibility-view.aspx
fonte
Esta pergunta é uma duplicata do modo de navegador Force "Internet Explorer 8" na intranet .
As respostas indicam que não é possível desativar a exibição de compatibilidade (no lado do servidor) - https://stackoverflow.com/a/4130343/24267 . Certamente parece ser esse o caso, pois nenhuma das sugestões que tentei funcionou. No IE8, o "Modo navegador" é definido para a visualização de compatibilidade com o Internet Explorer 8, independentemente do tipo de cabeçalho compatível com X-UA que você envia.
Eu tive que fazer um tratamento especial para o IE7 e o modo de compatibilidade, que causou a renderização do navegador usando o IE8, mas relatou que era o IE7, quebrei meu código. Foi assim que corrigi meu código (sei que é um hack horrível e devo testar recursos que não sejam versões do navegador):
fonte
Teve o mesmo problema. Funcionou usando
fonte
Adicione isso dentro da tag principal da sua página (segmentando a versão do IE desejada):
Observe que isso NÃO mudará o fato de o navegador informar que está no modo de compatibilidade (chamado de modo do navegador), mas a página será renderizada no modo de padrões do IE8. Se ainda não renderizar como você deseja, provavelmente é porque você tem o javascript que está erroneamente verificando a versão do IE. Consulte a postagem do blog a seguir para determinar de qual propriedade você deve estar desativando, porque, mesmo se você definir a tag meta X-UA-Compatible, a sequência do agente do usuário continuará dizendo MSIE 7.0 .
No meu caso, para a correção, tive que adicionar uma verificação ao modo de compatibilidade do IE7. Fiz isso usando um código javascript simples:
fonte
Para qualquer outra pessoa que estiver lendo isso que deseja desabilitar isso via GPO para todos os usuários, esta é a configuração:
Configuração do computador / Modelos administrativos / Componentes do Windows / Internet Explorer / Exibição de compatibilidade / Ativar o modo de padrões do Internet Explorer para intranet local
embora a edição web.config tenha corrigido para mim.
fonte
Alterar os cabeçalhos em .htaccess
Encontre a solução para este problema aqui: https://github.com/h5bp/html5-boilerplate/issues/378
fonte
O comentário de Stefan S sobre o modo de documento versus o modo de navegador foi muito pertinente para o meu problema.
Eu tenho os metadados X-UA-Content na página, mas estava testando a versão do navegador no lado do cliente
navigator.appVersion
. Este teste não reflete os metadados porque está dando ao modo navegador e não ao modo documento.A resposta para mim foi testar
document.documentMode
algo como:Agora, minha meta meta X-UA-Content reflete no meu teste do navegador.
Por que faço uma coisa tão desaprovada como testar o navegador? Rapidez. Vários dos meus suplementos jQuery, como o tablesorter, são muito lentos no IE6 / 7 e quero desativá-los. Não tenho certeza de que o teste de recursos do navegador possa me ajudar a resolver isso de outra forma.
fonte