GWT图像加载处理程序

时间:2014-12-26 10:43:47

标签: java gwt onload

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,似乎原因是图像没有附加。但在我的第二个示例代码中,图像也没有附加?对吗?

1 个答案:

答案 0 :(得分:1)

如果你看一下wrap()方法的文档,它会说This element must already be attached to the document.。因此,当您实际检查wrap()它调用onAttach()的源时,它实际上将事件处理程序注册到DOM元素。所以区别在于Image对象认为元素在不处于该状态时被附加。

现在,在wrap()的入口处,有断言检查条件是否得到满足。虽然你需要enable assertions让它们有效。