2011-12-30 98 views
3

我正在使用<img> onload函數在已加載的圖像上觸發調整大小操作。但是,我發現如果在一個網頁中有兩個或更多的<img> s具有相同的「src」,這意味着圖像是相同的,後面的<img>的onload()函數將不會被調用。如何確保所有<img> s都適當調整大小,即使有一些<img> s具有相同的src?javascript img onload()

謝謝。

+2

你目前的代碼是什麼? – Purag 2011-12-30 05:02:26

+1

如果'.onload'處理程序在img標籤上設置'.src'屬性之前設置,則即使圖像來自瀏覽器緩存,onload處理程序也應該啓動。如果你先設置了'.src'(或者它已經在頁面的HTML中設置了),然後設置'.onload',那可能就太晚了。 – jfriend00 2011-12-30 05:21:40

+0

@ jfriend00我使用代碼進行綁定,與您描述對應的效果是什麼? – 2011-12-30 08:36:21

回答

2

這是因爲您的瀏覽器實際上緩存了第一張圖片。所以當你試圖再次加載相同的「src」時,它會被本地緩存,並且永遠不會觸發onload。要隨時加載它,可以在查詢字符串上附加一個唯一值。

1

而不是使用一個單獨的onload處理每個<img/>的,爲什麼不直接使用一個單一的onload事件爲window?此事件在之後觸發,所有內容(如所有圖片)都已加載,因此您可以僅使用該單個處理程序處理每個圖像。例如:

function processAllImages() 
{ 
    var imgElts = document.getElementsByTagName('img'); 
    for (var i=0; i<imgElts.length; i++) 
    { 
     processImage(imgElts[i]); // TODO write this function 
    } 
} 

window.onload = processAllImages; 
+0

我不能,因爲我的代碼需要計算每個圖像的寬度和高度來做一些佈局。一些圖像加載非常緩慢 – 2011-12-30 08:34:54