java - GWT 图像加载处理程序

标签 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(= 未附加图像)。

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

最佳答案

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

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

关于java - GWT 图像加载处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27656025/

相关文章:

javascript - 为什么 Windows 只打开一次 `onload` 事件?

javascript - 尝试使用 onload 从 iframe 中删除/移除 div

java - 如何减小java中截图图像的大小

java - 在 C# 中使用 getBytes() 从 SQL 中获取数据(提供了 JAVA 代码)

java - 如何选出奇数并将其相乘

testing - GWT测试报错NoClassDefFoundError : com/google/gwt/dev/cfg/Condition

java - Java中获取文件所在驱动器的最佳方法是什么?

java - 奇怪的谷歌地图尺寸调整行为

java - 在 GWT 2.7 中使用 SuperDevMode 时如何获得完整的 StackTrace?

jquery - 在 jQuery 将其附加到 onload 后删除添加的类