IE "ожидаемый объект" ошибка при попытке получить img из сервлета Java - PullRequest
0 голосов
/ 12 августа 2010

У меня есть следующий тег изображения в JSP:

<img id="validationGraph" src="/myapp/MyServlet?mode=myMode" 
 usemap="#validationMap" border="0" onLoad="getImageMap()" />

Java-сервлет использует JFreeChart для генерации png-изображения и записи его в выходной поток.Это отлично работает в Firefox и Chrome, но я получаю периодически ошибку в IE.Во всех трех браузерах изображение действительно загружается каждый раз.Но большую часть времени в IE я получаю ошибку «Ожидается объект» в строке тега img, и функция getImageMap () не срабатывает.Иногда страница нормально загружается в IE без сообщения об ошибке и при срабатывании функции getImageMap.

Я подумал, что, возможно, вызов Ajax в getImageMap () вызывал прерывистую проблему, поэтому я добавил несколько предупреждений в эту функцию.Одним из предупреждений является самая первая строка функции.Когда IE работает правильно, различные предупреждения появляются как положено.Когда IE сообщает об этом сообщении об ошибке, ни одно из предупреждений не появляется.Таким образом, похоже, что IE даже не входит в функцию getImageMap (), когда возникает эта конкретная ошибка.

Я пробовал различные способы устранения неполадок / отладки, и я не могу найти причину этой проблемы.Есть предложения?

1 Ответ

0 голосов
/ 14 августа 2010

Ошибка ожидаемого объекта обычно отображается, когда вы пытаетесь вызвать метод или получить доступ к свойству объекта, и этот объект имеет значение null.

У вас есть ошибка в вашем JavaScript, которая иногда возникает.Я подозреваю, что это код, который зависит от функции getImageMap для запуска.Если я правильно помню, событие onLoad на изображениях сложно в IE, потому что оно запускается, только если изображения загружаются с сервера.

Возможно ли, что время от времени IE берет изображение из своего кэша, а не отправляется на сервер (и больше не запускает событие)?Добавьте метку времени к каждому вызову сервлета и посмотрите, устраняет ли она проблему:

src="/myapp/MyServlet?mode=myMode&tstmp=unique_value_for_each_call_to_invalidate_browser_cache" 
...