Я пытаюсь использовать 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, использующих режим IE8-as-IE7 или представление совместимости, я вижу, что он показывает изображение с именем файла, например 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);
}
}