GWT 图片加载处理程序

3

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未附加)。
这个问题中,似乎原因是Image未附加。但在我的第二个示例代码中,图片也没有被附加,对吗?
1个回答

1
如果你查看wrap()方法的文档,它会说“此元素必须已经附加到文档中。”。因此,当你实际检查wrap()的源代码时,它调用onAttach(),这实际上向DOM元素注册事件处理程序。因此,区别在于Image对象认为元素已经连接,而实际上并非如此。
现在,在wrap()入口处有一个断言来检查是否满足条件。虽然你需要启用断言才能使它们生效。

我不明白为什么我们必须将元素附加到处理负载事件上,因为这在JavaScript中并不是一项义务。 - puglic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接