无法加载Image,即使它已添加到RootPanel?

时间:2013-01-03 06:04:56

标签: gwt

我想将“img”元素显示为面板的子元素。我们应该使用Image小部件吗?我正在做以下事情:

Image img = new Image();
img.getElement().getStyle().setWidth(80, Style.Unit.PX);
img.getElement().getStyle().setHeight(80, Style.Unit.PX);

// add it to a panel, which eventually gets added to the root panel.
somePanel.add(img);

// set the url
img.setUrl("stuff/test.png");

这适用于FF。当我在移动safari中运行相同的代码时,图像永远不会加载。我已经为Image实例添加了一个LoadHandler。我可以在FF上看到事件回调被触发。但是在移动游猎中,它们从未被触发过。

我记得必须将一个Image添加到RootPanel才能永远加载,但我确实这样做了。还有什么可能导致这个?我确定png资源位置正确。

由于

1 个答案:

答案 0 :(得分:0)

经验法则:始终使用绝对网址,可能使用GWT.getModuleBaseURL()GWT.getHostPageBaseURL()GWT.getModuleBaseForStaticFiles()作为前缀:

img.setUrl(GWT.getHostPageBaseURL() + "stuff/test.png");

这是因为GWT代码在iframe中运行并从子文件夹中加载,并且浏览器在是否使用主机页面或iframe URL来解析相对URL方面的行为不同。