GWT может отобразить использование спрайтов ImageBundle быть сделанным работать в IE7 и IE6?

Я пытаюсь использовать 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);
  }
}

5
задан Spudley 9 May 2012 в 09:02
поделиться

3 ответа

Использование Image.setUrl (MyResources.INSTANCE.icon1 (). GetUrl ()) является проблемой.

Вы должны использовать Image.setResource (MyResources.INSTANCE.icon1 ()) вместо

9
ответ дан 14 December 2019 в 01:06
поделиться

Как вы используете ImageResource?

Проблема, на которую вы ссылаетесь, существует только в том случае, если вы используете ее с директивой CssResource @sprite.

Если вы используете его, создав вместо этого экземпляр объекта Image, он должен нормально работать в IE6 + 7

0
ответ дан 14 December 2019 в 01:06
поделиться

У меня аналогичная проблема возникает и в 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 ()) ", который не работает для установки фонового изображения, так как он просто ожидает String. В IE8 и других браузерах вторая часть кода работает нормально. Но в IE7 он отображает весь пакет изображений (как в исходной проблеме, описанной выше).

Есть ли способ установить фоновое изображение, используя изображение из GWT ResourceBundle, чтобы оно правильно работало в IE7?

0
ответ дан 14 December 2019 в 01:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: