J'essaie d'utiliser un ClientBundle dans mon application GWT pour que plusieurs images soient envoyées en un seul fichier. Je déclare le paquet comme ceci:Est-ce que les images-images GWT utilisant ImageBundle peuvent être utilisées dans IE7 et IE6?
public interface MyResources extends ClientBundle {
public static final MyResources INSTANCE = GWT.create(MyResources.class);
@Source("icon1.png") ImageResource icon1();
@Source("icon2.png") ImageResource icon2();
}
Cela fonctionne très bien dans Firefox et IE8, mais dans IE7 (et versions antérieures) sprite tout apparaît à la place d'un de mes images originales - c'est icon1 est à côté de icon2 à côté de icon3, et ainsi de suite. Dans les outils de développement IE8 utilisant le mode IE8-as-IE7 ou Compatibility View, je peux voir qu'il montre une image avec un nom de fichier comme 26BEFD2399A92A5DDA54277BA550C75B.cache.png, ce qui est ce que je m'attendais.
Est-il possible de faire en sorte que les images-objets GWT fonctionnent dans IE7 et moins? Si ce n'est pas le cas, y a-t-il un moyen de se dégrader gracieusement pour que les utilisateurs d'autres navigateurs obtiennent une accélération du spriting et que les utilisateurs d'IE7 et IE6 obtiennent quelque chose qui soit correct mais plus lent?
Edit: Le Client Bundle Developer's Guide a une discussion sur l'utilisation ClientBundle et @sprite, et dit « Appui à IE6 est impossible dans ce format, parce que les changements structurels au DOM sont nécessaires pour mettre en œuvre un « effet de fenêtrage ». Une fois qu'il est possible de distinguer ie6 et ie7 dans user.agent, nous pourrions revoir le support pour ie6 Dans l'implémentation actuelle, le code ie6 ne sera pas rendu correctement, bien que ce soit un problème purement esthétique. " Est-ce que c'est ce qui se passe dans mon cas, et y a-t-il un moyen de contourner le problème? Montrer toutes les images est "purement un problème cosmétique", mais c'est une question assez sévère.
Edit 2: Voici comment j'utiliser les images:
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);
}
}
Merci, ça l'a fait! – aem