2013-01-03 156 views
0

我想显示一个“img”元素作为面板的子元素。我们应该使用图像小部件吗?我正在做以下事情:即使将图像添加到RootPanel,也无法加载图像?

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上,触发事件回调。但在移动Safari上,它们从未被触发。

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

感谢

+0

dev工具控制台说什么? –

+0

对不起,什么是“开发工具控制台”?我在iPhone上的UIWebView中运行这个。我正在将控制台语句打印到内存日志中,并且我可以看到没有任何回调函数正在执行。 – user1219278

+0

您是否使用PhoneGap或任何类似的技术与GWT?确保你在问题中标记相同。 – SSR

回答

0

凭经验:总是使用绝对路径,可能使用GWT.getModuleBaseURL()GWT.getHostPageBaseURL()GWT.getModuleBaseForStaticFiles()作为前缀:

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

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