【问题标题】:GWT Image load handlerGWT 图像加载处理程序
【发布时间】:2014-12-26 10:43:46
【问题描述】:

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 is not attach)。

In this question,似乎原因是图像未附加。但是在我的第二个示例代码中,图像也没有附加?对吧?

【问题讨论】:

    标签: java gwt onload


    【解决方案1】:

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

    现在,在wrap() 的入口处有一个检查条件是否满足的断言。虽然您需要enable assertions 才能使它们生效。

    【讨论】:

    • 我不明白为什么我们必须附加元素来处理加载事件,因为这不是 Javascript 中的义务..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    相关资源
    最近更新 更多