Antes de ler:
Antes de ler o conteúdo específico do artigo, espero que você possa abrir o IE8 primeiro, abrir http://www.taobao.com e depois digitar na barra de endereço:
javascript:alert(document.documentMode +navigator.userAgent);void(0)
Não sei se você ficou surpreso depois de ver os resultados. De qualquer forma, acho muito estranho, porque não há tag de compatibilidade na meta da página e não há tag X-UA-Compatible no cabeçalho http quando o violinista verifica. isso. Por que diabos o site funciona no modo IE7 ?
Modo de compatibilidade do IE7 e visualização de compatibilidade
Ontem, quando eu estava lendo um artigo sobre iframe altamente adaptável no Word of Mouth, descobri que a demonstração fornecida era diferente da minha demonstração no IE8. O resultado online foi obviamente o mesmo do IETester7. nenhuma marca de compatibilidade no meta , o violinista verifica se não há marca X-UA-Compatible no cabeçalho http, mas por que os resultados online são diferentes dos locais? Isso me deixou deprimido. Depois de olhar novamente, descobri que a demonstração online não exibia o botão "Visualização de compatibilidade" no IE8. Deve ser esse o motivo.
Mais tarde encontrei um artigo Just The Facts: Recap of Compatibility View Embora não tenha resolvido o problema, gostaria de compartilhá-lo e citar uma de suas passagens.
A visualização de compatibilidade e a tag X-UA-Compatible não são equivalentes
A Visualização de Compatibilidade é algo que você faz no cliente. Ela afeta três coisas: a string do Agente do Usuário, o Vetor de Versão (usado na avaliação de comentários condicionais) e para qual modo os DOCTYPEs que acionam os Padrões são mapeados – Padrões do IE8 ou Padrões do IE7. -UA-Compatível <META> tag/cabeçalho é algo que você usa no conteúdo da página/lado do servidor e, quando presente, substitui completamente as configurações de visualização de compatibilidade no cliente. Afeta duas coisas: o vetor de versão e os DOCTYPEs de modo que acionam os padrões. mapear para. Ele não pode afetar a string UA, pois já é tarde demais para mudar isso - o cliente já fez a solicitação GET ao servidor (e contém uma string UA. O que isso significa para os desenvolvedores é que se o seu site for dinâmico). na string do User Agent, adicionar apenas a tag X-UA-Compatible (para fazer com que o IE8 exiba seu site no modo de padrões do IE7) não tornará seu site compatível - você também precisará atualizar a lógica de detecção de string do User Agent como bem.
Isso significa que a visualização de compatibilidade desempenha três funções:
A meta tag desempenha apenas duas funções: 1. Versão, 2. Tipo de documento
(Diz-se aqui que a meta tag não afeta o UserAgent. Ela deve se referir ao ua no lado do servidor. Como a solicitação do cliente foi enviada e contém ua, ela não será afetada. No entanto, o ua do cliente ainda é afetado e ie7 é exibido.)
correto:
(Talvez o teste anterior esteja errado) O ua do cliente não será afetado, afetará apenas document.documentMode
além disso:
Tag/cabeçalho <META> refere-se respectivamente a: <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"> e à adição de cabeçalhos http no lado do servidor, como no arquivo de configuração .net:
Além disso, você também pode adicionar cabeçalhos http ao IIS ou Apache:
resolução de problemas
Neste ponto, o problema no início do artigo ainda não foi resolvido. Ontem à noite, vi acidentalmente o artigo de Qin Ge sobre como usar o doctype para ativar o modo de navegador . Ele mencionou que o modo de compatibilidade também será ativado na lista de sites da lista negra da Microsoft. o artigo acima Um dos dois comentários é: res://iecompat.dll/iecompatdata.xml (somente IE8). Insira este endereço no IE8 e ele exibirá: Lista de visualização de compatibilidade Desta forma, você pode finalmente encontrar o domínio. nomes de Koubei e Taobao nesta lista, então acho que esta deve ser a resposta para a pergunta no início deste artigo. Você também pode encontrar um nome de domínio nesta lista, abri-lo e inserir o javascript no início deste artigo. o artigo na barra de endereço (ps: a Microsoft tem muitas listas), convertendo tantos sites em IE7.
<configuração>
<sistema.webServer>
<httpProtocolo>
<customHeaders>
<claro />
<add name="X-UA-Compatible" value="IE=EmulateIE7" />
</customHeaders>
</httpProtocolo>
</system.webServer>
</configuração>