2010-02-02 57 views
0
負荷事件

當我想要當圖像被載入我用

事情發生

$( 「#圖像」)的負載(函數(){}東西)。

  • 但在Firefox以外的其他任何情況下,只有在圖像第一次加載時才起作用。例如,如果我已經創建了一個圖像庫,並且想要在加載圖像時發生某些事情,我使用.load並且它首次運行:但是如果用戶隨機播放回圖像(已經存在於緩存中),則該事件不會觸發在Opera中,IE等

解決這個問題的一種方法是添加一些隨機數字到圖像src,但是這會佔用額外的帶寬,因爲它必須再次下載圖像(對吧?)。

有沒有什麼好的解決方案呢?

回答

2

使用.complete檢查:

$("#image").each(function() { 
    if(this.complete) doSomething(); //Runs immediately, image ready (cached) 
    else $(this).load(function() { doSomething(); }); //Will run when loaded 
}); 
+0

我認爲這會奏效。謝謝! – Allan 2010-02-02 14:58:26

+0

看起來像在圖像上分配.load()不與Opera瀏覽器一起使用 – 2013-01-25 11:29:27

1

我會實際添加另一種方式:

這不是我做的,不幸的是我不知道這背後的原始大腦:

$('#image').one('load',function() { 
so_something(); 
}).each(function() { 
if(this.complete) $(this).trigger('load'); 
});