我寫過一個jQuery插件,它會在加載圖像之前和之後執行一個函數。本質上,這是因爲我們可以在顯示大圖像時顯示加載動畫。在Internet Explorer中檢查img.complete時可能出現的競爭狀況
if (typeof this.naturalWidth == "undefined" || this.naturalWidth == 0) {
return; // 1
}
// 2
if (!this.complete) {
options.preload(this); //3
$(this).load(function() {
options.loaded(this); //4
});
}
- 檢查已加載失敗(e.g.404)圖像。
- 檢查圖像加載
this.complete
- 如果不是,則調用預載功能(啓動加載動畫)
- 添加回調的圖像
load
事件(停止加載動畫)
這在Chrome和Firefox中運行良好。但是,在IE(9)中,我發現有時preload
函數會觸發,但不會觸發loaded
函數。
我懷疑這可能是一種可能的競爭條件。
處理這個問題的最佳方法是什麼?調用預載功能後,我應該再次檢查this.complete
嗎?
感謝
本
設置SRC奏效了,這似乎是一個「問題」與IE9 。我發現這篇文章討論了同樣的問題。http://nnucomputerwhiz.com/ie9-image-load-event-bug.html –