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 中(= 图像未附加)。
在这个问题中,原因似乎是图像没有附加。但是在我的第二个示例代码中,图像也没有附加?右?
如果你看一下 wrap() 方法的文档,它说This element must already be attached to the document.
.因此,当您实际检查wrap()
的源代码时,它会调用onAttach()
,这实际上将事件处理程序注册到 DOM 元素。因此,不同之处在于图像对象认为元素在未处于该状态时已附加。
现在,在wrap()
入口处,有断言检查条件是否满足。尽管您需要启用断言才能使它们有效。