2013-03-12 60 views
1

代碼示例:瀏覽器圖像緩存和jQuery.load()問題

var img = $("img"); 
var n = img.length; 
var i = 0; 
function loadImg(i) { 
    if(i < n) { 
     $(img[i]).load(function() { 
      console.log("img["+i+"] loaded"); 
      i++; 
      loadImg(i); 
     }); 
    } else { 
     console.log("img["+i+"] loaded"); 
     return false; 
    } 
} 
loadImg(0); 

此代碼的工作,但是當圖像已經在瀏覽器緩存 - jQuery.load不點火。 我該如何檢查圖片是否在瀏覽器緩存中並強制啓動jQuery.load?

謝謝。

+0

不要忘記選擇你的答案,一旦你找到一個。 – 2013-03-12 20:12:35

回答

2

Paul Irish爲此寫了一個整潔的小插件。這不正是你想要的東西,包括從緩存中加載的圖像:

https://github.com/paulirish/jquery.imgloaded

我已經與上述插件的更新您的提琴包括在內。這應該回答你的問題:

http://jsbin.com/acuhaf/9/edit

+0

不錯的主意,在我的例子中dut在IE8中不起作用。 FF,Chrome,IE9 +。 – Poplava 2013-03-12 15:42:35

+0

請注意,此腳本應在頁腳中使用。你嘗試過嗎?你可能有一個小提琴,我們可以一起工作解決你的問題嗎? – 2013-03-12 15:43:59

+0

謝謝羅賓。我會創建一個小提琴。 mb jsbin.com?或者你可以建議什麼? – Poplava 2013-03-12 15:55:47

1

jQuery documentation說:

與圖像
面臨的共同挑戰開發商嘗試使用.load解決()快捷鍵使用時加載事件的

注意事項是在圖像(或圖像集合)完全加載時執行功能。

有幾個已知的警告與此應該注意。
它們是:
- 它不工作始終也沒有可靠的跨瀏覽器
- 它不正確的WebKit如果圖像的src設置爲相同的SRC像以前
火 - 它不能正常冒泡DOM樹
- 可以停止火已經生活在瀏覽器的緩存

您可能需要使用其他圖書館預加載圖像的圖像。我會推薦PreloadJS

+0

不想使用任何插件來解決此問題... – Poplava 2013-03-12 15:44:09