我想将“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资源位置正确。
由于
答案 0 :(得分:0)
经验法则:始终使用绝对网址,可能使用GWT.getModuleBaseURL()
,GWT.getHostPageBaseURL()
或GWT.getModuleBaseForStaticFiles()
作为前缀:
img.setUrl(GWT.getHostPageBaseURL() + "stuff/test.png");
这是因为GWT代码在iframe中运行并从子文件夹中加载,并且浏览器在是否使用主机页面或iframe URL来解析相对URL方面的行为不同。