我正在使用<img>
onload函數在已加載的圖像上觸發調整大小操作。但是,我發現如果在一個網頁中有兩個或更多的<img>
s具有相同的「src」,這意味着圖像是相同的,後面的<img>
的onload()函數將不會被調用。如何確保所有<img>
s都適當調整大小,即使有一些<img>
s具有相同的src?javascript img onload()
謝謝。
我正在使用<img>
onload函數在已加載的圖像上觸發調整大小操作。但是,我發現如果在一個網頁中有兩個或更多的<img>
s具有相同的「src」,這意味着圖像是相同的,後面的<img>
的onload()函數將不會被調用。如何確保所有<img>
s都適當調整大小,即使有一些<img>
s具有相同的src?javascript img onload()
謝謝。
這是因爲您的瀏覽器實際上緩存了第一張圖片。所以當你試圖再次加載相同的「src」時,它會被本地緩存,並且永遠不會觸發onload。要隨時加載它,可以在查詢字符串上附加一個唯一值。
而不是使用一個單獨的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;
我不能,因爲我的代碼需要計算每個圖像的寬度和高度來做一些佈局。一些圖像加載非常緩慢 – 2011-12-30 08:34:54
我之前問過類似的問題。
查看結果:Javascript/jQuery: How to detect img is fully downloaded or not?
總之,您可以使用img
標記的'complete'屬性。
在綁定加載事件之前檢查它。
你目前的代碼是什麼? – Purag 2011-12-30 05:02:26
如果'.onload'處理程序在img標籤上設置'.src'屬性之前設置,則即使圖像來自瀏覽器緩存,onload處理程序也應該啓動。如果你先設置了'.src'(或者它已經在頁面的HTML中設置了),然後設置'.onload',那可能就太晚了。 – jfriend00 2011-12-30 05:21:40
@ jfriend00我使用代碼進行綁定,與您描述對應的效果是什麼? – 2011-12-30 08:36:21