O IE8 força o modo de compatibilidade ao inserir dados em uma div
Pergunta
Eu tenho lutado contra o modo de compatibilidade do IE8 o dia todo e estou prestes a jogar um tijolo nisso.
Eu tenho algum código, que usa o JQuery 1.2 (sim, é antigo - não posso mudar isso), para pesquisar alguns registros em nosso aplicativo da Web. Os resultados da pesquisa podem ser clicados para visualizar o conteúdo do registro (usando .animate (), ele abre um espaço sob a linha e cria outro TR por baixo e insere dados HTML de um feed json).
No IE8, clicando em um resultado para visualizar o conteúdo a força a recarregar no modo de compatibilidade, onde funciona bem em todos os outros navegadores (IE7, FF3.0+, Chrome, Safari). Eu tenho tentado usar a barra de ferramentas do desenvolvedor do IE8 para depurar e rastrear por que isso está acontecendo, mas não consegui encontrar nenhum erro ou evidência do que possa estar causando.
Código que mostra visualização:
// Code that binds a click to open the result preview:
var _tr = $('<tr class="outline" id=' + val.assessment.assessmentId + '></tr>').bind("click", msi.reuseAssessment.preview);
...
// in msi.reuseAssessment.preview()
var url = "/direct/msi-assessment/" + assessmentId + "/assessmentHtml.json?no-cache=true";
jQuery.ajax({
type: "GET",
url: url,
dataType: "json",
success: function(d, textStatus){
var _content = d.assessmentHtml;
var _preview = $("<tr id=" + assessmentId + "></tr>");
// loadContent
_tr.after(_preview.animate({
height: 50
}, 500, 0, function() {
msi.reuseAssessment.drawPreview(this, _content); // Puts the content from the json into a td
}));
},
error: function(xmlHttpReq, status, errorThrown) {
// display error msg
}
});
Passando pelo código usando as ferramentas de desenvolvedor do IE8, ele é passado aqui e entrando em algum lugar no código do jQuery e é quando ele atualiza no modo de compatibilidade. Eu validei o JSON, o código HTML que sai com o W3C e está tudo bem, estou realmente sem saber o que está acontecendo.
Alguém sabe como posso rastrear melhor o que está causando, ou devo apenas forçar o modo IE7 nessas páginas?
EDIT: A pesquisa é realizada em um 'pop -up' do Ajax que aparece na parte superior da tela. Seu modelo (Base HTML) é carregado de um arquivo HTML separado e injetado em uma div na parte inferior da página original. Isso significa que haveria arquivos HTML aninhados (com <html></html>
tags etc). Isso afetaria também?
EDIT 3: A remoção dessas tags duplicadas não corrige o problema.
EDIT 2: Ainda não resolveu isso. É apenas uma daquelas coisas que o IE8 não exibirá corretamente e a colocará no Browser Quirk? Eu realmente apreciaria alguma ajuda nisso.
Solução 3
Depois que um colega também pesquisou, descobrimos isso aqui em So, onde foi confirmado que o Max-Hight está causando uma afirmação difícil no IE8, confirmando que é, de fato, um bug no IE8 como Ericlaw postou.
Estávamos usando o Max-Hight para o estilo da div em que estávamos inserindo o conteúdo e, por sua vez, causando a afirmação difícil. A pergunta vinculada acima tem um trabalho para qualquer outra pessoa que encontre esse problema.
Outras dicas
Por força a recarregar no modo de compatibilidade Você quer dizer que recebe uma notificação de balão de flyout que diz algo como: "O Internet Explorer encontrou um problema com esta página e a carregou no modo de compatibilidade"?
Nesse caso, isso significa que você acertou um bug no IE. Chamado de "afirmação difícil", significa que o mecanismo de layout travou (não um AV ou qualquer coisa emocionante, ele apenas entrou em um estado irrecuperável) e, portanto, ou seja, tenta fornecer ao usuário algum Conteúdo usando o mecanismo de layout mais antigo.
Se o problema ainda ocorrer no IE9, registre um bug em http://connect.microsoft.com/ie
obrigado!
Você garantiu que seu doctype e x-ua compatíveis estão corretos
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
E adicione isso logo após o <head>
<meta http-equiv="X-UA-Compatible" content="IE=8">