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(= Image isn&t; t)。
In this question,似乎原因是图像没有附加。但在我的第二个示例代码中,图像也没有附加?对吗?
答案 0 :(得分:1)
如果你看一下wrap()方法的文档,它会说This element must already be attached to the document.
。因此,当您实际检查wrap()
它调用onAttach()
的源时,它实际上将事件处理程序注册到DOM元素。所以区别在于Image对象认为元素在不处于该状态时被附加。
现在,在wrap()
的入口处,有断言检查条件是否得到满足。虽然你需要enable assertions让它们有效。