GWT 2.0.3 на IE8 image LoadHandler не вызывается периодически - PullRequest
1 голос
/ 06 июля 2010

кто-нибудь сталкивался с проблемой, когда вы регистрируете 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 сам прекрасно загрузит изображение. Теперь он, кажется, знает тип, когда его нет в тегах.

Очень расстраивает.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 05 октября 2010

Я столкнулся с той же проблемой, после нескольких дней проверки мы обнаружили, что это внутренняя ошибка IE8 с кешем изображений. Попробуйте удалить всю историю браузера, если она работает впервые. Если это ваш случай, то рабочим решением является добавление dummyParam к каждому URL изображения (со значением, например, new Date (). TimeInMilis () или что-то подобное). Я включил этот параметр только для user.agent = ie8.

Я действительно боюсь IE9: (.

1 голос
/ 28 октября 2010

Оказалось, что это известная ошибка GWT .

Обновление до GWT 2.1 должно решить проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...