кто-нибудь сталкивался с проблемой, когда вы регистрируете LoadHandler на изображении, а когда изображение загружается, иногда не вызывается LoadHandler? Есть ли вуду, чтобы заставить его работать? Как какой-то нелепый порядок инициализации? Это сводит меня с ума.
Код работает на Firefox, Chrome, IE6 и IE7. Изображение прикреплено к DOM (я знаю, что LoadHandler не будет вызываться, если изображение не прикреплено).
Редактировать
Я сократил код большего размера до следующего фрагмента.
private void loadNext() {
if (count < urlList.size())
Image displayImage = new Image();
displayImage.addLoadHandler(new ImageLoadHandler());
displayImage.addErrorHandler(new ImageLoadError());
mainPanel.add(displayImage);
displayImage.setUrl(urlList.get(count));
return;
}
}
private class ImageLoadHandler implements LoadHandler {
public void onLoad(LoadEvent event) {
count ++;
Log.TRACE("Success");
loadNext();
}
}
private class ImageLoadError implements ErrorHandler {
public void onError(ErrorEvent event) {
Log.ALERT("Error");
}
}
Таким образом, в основном это загружает изображения по одному, как только предыдущая закончила загрузку. Проблема, которая возникает, заключается в том, что первое изображение отображается в IE8 как красный x, и обнаруживается ошибка. Теперь, если я щелкну правой кнопкой мыши по изображению и нажму «показать картинку», оно отобразится и вызовет что-то такое, что событие onLoad будет запущено, а остальные изображения загрузятся без ошибок! Теперь внезапно событие onLoad работает, все другие изображения того же типа больше не являются ошибкой.
urlList - это список URL-адресов изображений. URL не содержит расширения для типа изображения. URL идут к сервлету, который генерирует изображение. Я позаботился о том, чтобы установить правильные заголовки Content-type (image / jpeg) в ответе.
Кроме того, если я щелкну правой кнопкой мыши по сломанному изображению, IE8 покажет, что не знает его тип. Если я скопирую URL-адрес и вставлю его в адресную строку, IE сам прекрасно загрузит изображение. Теперь он, кажется, знает тип, когда его нет в тегах.
Очень расстраивает.
Спасибо.