É normal o desenvolvimento da Web obter a largura e a altura da imagem. A imagem não pode obter a largura e a altura da imagem antes de carregar. Somente após o carregamento a imagem pode ser concluída, a largura e a altura da própria imagem são obtidas. Por exemplo:
A cópia do código é a seguinte:
var iMg = new Image ();
img.src = "carreging.gif";
img.onload = function () {
alerta (img.width);
};
OK? Esse código parece estar bem, mas haverá um bug no IE, ou seja, não há problema quando o IE for aberto pela primeira vez, e será uma tragédia ao usar esse método na segunda vez. O IE não tem resposta e será o mesmo, mesmo que a página seja atualizada. Como o IE cache imagens, a segunda imagem carregada não é carregada no servidor, mas é carregada do buffer.
Primeiro, escreva o método Onload e especifique o URL desta imagem, que é normal. Portanto, não é que o IE não acionasse o evento OnLoad, mas porque o buffer é carregado tão rápido que o evento Onload já foi disparado quando o img.onload não está em execução. Isso está ok.
A cópia do código é a seguinte:
var iMg = new Image ();
img.onload = function () {
alerta (img.width);
};
img.src = "carreging.gif";