我试图用一个ClientBundle在我的GWT应用程序,使多个图像被发送到一个文件。我声明束像这样:

public interface MyResources extends ClientBundle {
  public static final MyResources INSTANCE = GWT.create(MyResources.class);

  @Source("icon1.png") ImageResource icon1();
  @Source("icon2.png") ImageResource icon2();
}

这在Firefox和IE8很大,但在IE7(或更早)整个精灵代替我原来的图像之一的显示出来 - 那就是,ICON1旁边旁边ICON2到ICON3,等等。在使用IE8-AS-IE7模式或兼容性视图IE8的开发者工具,我可以看到它的显示与像26BEFD2399A92A5DDA54277BA550C75B.cache.png,这是我所期望的文件名的图像。

那么,有没有办法让GWT图像拼接工作在IE7和更低?如果没有,有没有什么办法可以适度降低这样的其他浏览器的用户拼合获得和IE7和IE6用户的增速得到的东西看起来正确的,但比较慢?

编辑:借助客户端包开发者指南有使用ClientBundle和@sprite的讨论,并说:“对IE6的支持是不是在这种格式是可行的,因为对DOM结构变化是实行必要的‘窗口’作用。一旦它能够区分IE6和IE7在user.agent,我们可以重温IE6的支持。在目前的实现,IE6的代码将不能正确渲染,虽然是纯粹的化妆品的问题“。这是发生了什么事在我的情况,是有办法解决吗?显示所有图像是“纯粹是化妆品的问题”,但它是一个非常严重的一个。

修改2:下面是如何使用的图像:

public class MyTabHeader extends Composite {
  @UiField Image icon;

  public MyTabHeader(String iconPath) {
    initWidget(uiBinder.createAndBindUi(this));
    this.icon.setUrl(iconPath);
  }
}

public class MyTabPanel extends TabPanel {
  public MyTabPanel() {
    String icon1 = MyResources.INSTANCE.icon1().getURL();
    MyTabHeader tabHeader1 = new MyWidget(icon1);
    Widget tabContent1 = new HTML("Content 1");
    add(tabContent1, tabHeader1);

    String icon2 = MyResources.INSTANCE.icon2().getURL();
    MyTabHeader tabHeader2 = new MyWidget(icon2);
    Widget tabContent2 = new HTML("Content 2");
    add(tabContent2, tabHeader2);
  }
}
有帮助吗?

解决方案

在使用Image.setUrl的(MyResources.INSTANCE.icon1()。使用getURL())的问题。

您应该使用Image.setResource(MyResources.INSTANCE.icon1()),而不是

其他提示

您是如何使用ImageResource?

您只引用这个问题的存在,如果你与CssResource @sprite指令使用它。

如果您通过实例化一个图片对象,而不是使用它,它应在IE6正常工作+ 7

我得到在IE7类似的问题过了,主要是因为我没有选择,只能使用“的getURL()”的选择,因为我需要设置资源为背景图像。即代替类似的信息(以上面的例子):

this.icon.setUrl(MyResources.INSTANCE.icon1().getURL());

我需要做的:

this.mypanel.getElement().getStyle().setBackgroundImage("url("+MyResources.INSTANCE.icon1().getURL()+")");

而对于上述代码的第一位的解决方法是做“this.icon.setResource(MyResources.INSTANCE.icon1())”,即不用于设置背景图像的工作,因为它只是需要字符串。在IE8和其他浏览器,代码的第二位工作正常。但在IE7中,它显示了整个图像束(像原来的问题上面解释)。

那么,有什么办法可以设定使用图像从GWT的ResourceBundle的背景图像,这样它会在IE7正常工作?

可以使用与DataResource IE7

if( BrowserUtils.getIEVersionNumber() < 8 && BrowserUtils.isBrowserIE()){
    icon = new Image(resources.iconIE().getSafeUri());
} else {
    icon = new Image(resources.icon());
}
...
in client bundle: 

@Source("icon.png")
DataResource iconIE();

@Source("icon.png")
imageResource icon();
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top