gpt4 book ai didi

gwt - 可以使使用 ImageBundle 的 GWT 图像 Sprite 在 IE7 和 IE6 中工作吗?

转载 作者:行者123 更新时间:2023-12-04 17:41:43 25 4
gpt4 key购买 nike

我正在尝试在我的 GWT 应用程序中使用 ClientBundle 将多个图像作为单个文件发送。我像这样声明包:

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(及更早版本)中,整个 Sprite 显示在我的原始图像之一的位置 - 也就是说,icon1 位于 icon3 旁边的 icon2 旁边,依此类推。在使用 IE8-as-IE7 模式或兼容性 View 的 IE8 开发人员工具中,我可以看到它显示的图像的文件名类似于 26BEFD2399A92A5DDA54277BA550C75B.cache.png,这正是我所期望的。

那么有没有办法让 GWT 图像 Sprite 在 IE7 及更低版本中工作?如果没有,是否有任何方法可以优雅地降级,以便其他浏览器的用户获得 spriting 的加速,而 IE7 和 IE6 用户获得看起来正确但速度较慢的东西?

编辑: Client Bundle Developer's Guide有一个关于使用 ClientBundle 和 @sprite 的讨论,并说“在这种格式中支持 IE6 是不可行的,因为对 DOM 的结构更改是实现“窗口”效果所必需的。一旦可以在用户中区分 ie6 和 ie7 .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()) 代替

关于gwt - 可以使使用 ImageBundle 的 GWT 图像 Sprite 在 IE7 和 IE6 中工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2405181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com