原來
$("#QrCode").on("load",function(){ $(".loading").hide(); alert(1); }) //或者 document.getElementById("QrCode").onload = function(){ $(".loading").hide(); alert(1); }
看起來沒什么問題,但是為什么onload在ie下經常沒有被調用呢?因為瀏覽器會緩存圖片,第二次加載的圖片不是從服務器傳過來的,不會發起請求,但是圖片的complete屬性會被加上。alert(1);每次都會執行,所以猜測是錯誤的。
修改代碼如下
var img = new Image(); img.onload = function(){ document.getElementById("QrCode").setAttribute("src",this.src) $("#loading").hide(); } img.src = "/img/img.jpg";
onload事件寫到給imgage對象的src賦值之前了,先告訴瀏覽器如何處理這張圖片,再指定這張圖片的源,這樣就正常了。
所以,不是IE瀏覽 器沒有觸發onload事件,而是因為加載緩沖區的速度太快了,以至於沒有運行到obj.onload的時候,onload事件已經觸發了。