2011-12-30 2 views
3

Я использую функцию onload <img>, чтобы вызвать действие изменения размера на загруженном изображении. Но я обнаружил, что на одной веб-странице есть два или более <img> s с тем же «src», что означает, что изображение такое же, последняя функция onload() <img> не будет вызываться. Как убедиться, что все <img> s правильно изменены, даже если есть <img> s с тем же src?javascript img onload()

Спасибо.

+2

Ваш текущий код? – Purag

+1

Если обработчик '.onload' установлен до того, как свойство' .src' установлено в теге img, обработчик onload должен срабатывать, даже если изображение происходит из кеша браузера. Если вы сначала установили '.src' (или он уже установлен в HTML вашей страницы), а затем установите' .onload', может быть, слишком поздно. – jfriend00

+0

@ jfriend00 Я использую код , чтобы связать, каков эффект, соответствующий вам описанию? –

ответ

2

Это происходит потому, что ваш браузер фактически кэширует первое изображение. Поэтому, когда вы снова пытаетесь загрузить один и тот же «src», он локально кэшируется и никогда не запускает загрузку. Чтобы он всегда загружался, вы могли добавить к строке запроса уникальное значение.

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

Я не могу, потому что мой код должен рассчитать ширину и высоту каждого изображения, чтобы сделать какой-то макет. и некоторые изображения загружаются очень медленно –