在IE8图像上的GWT 2.0.3 LoadHandler不间断地调用

问题描述:

有没有人遇到过在图像上注册一个LoadHandler的问题,并且当图像加载时,LoadHandler有时不会被调用?有没有一些巫术使它工作?像一些荒谬的初始化顺序?这让我疯狂。在IE8图像上的GWT 2.0.3 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转到一个生成图像的servlet。我已经注意在响应中设置正确的内容类型标题(image/jpeg)。此外,如果我右击破碎的图像,IE8显示它不知道它的类型。如果我复制URL,将其粘贴到地址栏中,IE自动加载图像就可以了。现在它似乎知道不在标签中的类型。

非常令人沮丧。

谢谢。

+0

如何发布您的代码?那可能会帮助人们弄清楚发生了什么。 – aem 2010-07-07 13:59:08

原来,这是一个已知GWT Bug

更新到2.1 GWT应该解决的问题。

我遇到了同样的问题,经过几天的检查,我们发现它是IE8内部图像缓存的bug。尝试删除完整的浏览器历史记录,如果它第一次工作。如果是你的情况,那么工作解决方案是将dummyParam添加到每个图像URL(带有值,例如新的Date().timeInMilis()或类似的东西)。我只为user.agent = ie8启用了此参数。

我真的很害怕IE9的:(。

+0

我会尽力的。谢谢。 – Budric 2010-10-07 17:39:24