Fomos motivados a escrever este post para que TODOS entendam a diferença de interpretação entre o browser Internet Explorer e os Mozilla like (Chrome, Flock, Opera, Firefox).
Para isto vamos dar um exemplo (somos objetivos):
<html>
<head>
<script type="text/javascript" src="jquery-1.6.1.js"></script>
<script type="text/javascript">
jQuery.noConflict();
function abre(){
jQuery("div").each(function(){
document.write(jQuery(this).attr("class"));
});
}
</script>
</head>
<body onLoad="abre();">
<div class="hq pagina">
<div class="hq tira">
<div class="hq quadro"><div class="hq texto">fff</div></div>
<div class="hq quadro"><div class="hq texto">ggg</div></div>
</div>
<div class="hq tira">
<div class="hq quadro duplo"><div class="hq texto">hhh</div></div>
</div>
<div class="hq tira">
<div class="hq quadro"><div class="hq texto">mmm</div></div>
<div class="hq quadro"><div class="hq texto">nnn</div></div>
</div>
</div>
</body>
</html>
O que faz este código (não esqueça de incluir o jquery-1.6.1.js) é listar as classes das tags DIV.
Resultado no Chrome/Firefox:
Resultado no Internet Explorer:
O Internet Explorer é deficiente e ingrato. Ficamos por dois dias em cima deste comportamento anômalo, até descobrir a grande contradição do Internet Explorer:
Imediatamente após colocar na tela um resultado de script javascript, ele DESTRÓI o conteúdo da página base. Ele não tem buffer.
E como resolver ?
Rescreeva o código javascript assim:
function abre(){
var s = "";
jQuery("div").each(function(){
s = s + jQuery(this).attr("class");
});
document.write(s);
}
Desta forma, como os resultados do jQuery são armazenados em um buffer (variável s), a página não é destruída en quanto o HTML é lido pelo jQuery.
Problema Resolvido, pois Deus é poderoso.
Nenhum comentário:
Postar um comentário