GWT:2.6.1
我想在加载图像(图像 src)时执行一个操作。
我试过了,但是永远不会触发 onLoad 事件:
final Image img = new Image();
img.addLoadHandler( new LoadHandler()
{
@Override
public void onLoad( LoadEvent event )
{
//action
}
} );
img.setUrl( "/image.png" );
然后我试了一下:
final Image img = Image.wrap( Document.get().createImageElement() );
img.addLoadHandler( new LoadHandler()
{
@Override
public void onLoad( LoadEvent event )
{
//action
}
} );
img.setUrl( "/image.png" );
它起作用了...我不明白为什么第一个代码什么都不做。
重要提示:在这两个示例中,我没有将 Image 对象放入 dom(= 未附加图像)。
In this question ,似乎原因是图像未附加。但是在我的第二个示例代码中,图像也没有附加?对吧?
最佳答案
如果您查看 wrap() 方法的文档,它说 This element must already be attached to the document.
。因此,当您实际检查 wrap()
的源代码时,它会调用 onAttach()
,它实际上将事件处理程序注册到 DOM 元素。所以不同之处在于 Image 对象认为元素已附加,但它不处于该状态。
现在,在 wrap()
的入口处有一个断言来检查是否满足条件。虽然你需要 enable assertions使它们有效。
关于java - GWT 图像加载处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27656025/