2010-05-18 5 views
0

Je suis en train de développer un projet GWT et j'ai rencontré un problème de cross-browsering. Lors de l'utilisation de firefox, l'affichage de toutes les pages présente des problèmes. J'ai trouvé la raison pour laquelle: Dans UIBinder, chacune de mes pages est entourée d'un "g: HTMLPanel": au début et à la fin du fichier xml, pour envelopper le contenu de toutes les pagesGWT forced height HTMLPanel

, le code généré du panneau va comme ceci:

div style="width: 100%; height: 100%; ....

le problème est que "la hauteur: 100%". Si je l'enlève avec firebug, l'affichage est parfait. Donc, mon but est de supprimer par programmation ce 100% de hauteur générée .. Mais pas moyen de le faire! J'ai tout essayé: setHeight, setSize, en travaillant sur l'Element lui-même avec getElement(). Methods() ... J'ai essayé de faire des choses comme style.clear(), tout ce qui pouvait avoir une chance de fonctionner. code généré que "hauteur: 100%" sera TOUJOURS présent. Si je règle sa hauteur à "50%" ou "50px" cela n'a aucun effet.

J'ai même essayé de lui donner une carte d'identité, puis avec javascript pur pour changer de style, mais pas de solution soit ..

Note: Je suis sûr que je travaille sur l'élément à droite: l'ajout d'un styleName, par exemple, fonctionne bien.

Une idée?

Votre aide serait vraiment apprécié, je n'ai aucune idée de la façon de supprimer ce bit de code généré, et je l'ai cherché heures déjà :(:(:(:(

Meilleures salutations,

Nils

Répondre

0

Je viens inspecter une partie du code généré par GWT de mes uibinders dans firebug et < g. HTMLPanel> n'ajoute tout style de largeur ou la hauteur

Je n'ai pas < g : HTMLPanel> comme le ro Mais dans mon uibinder, j'ai ma propre classe. Qu'en est-il de l'utilisation de FlowPanel comme classe uibinder racine à la place, puis de HTMLPanel? A défaut, vous pouvez toujours utiliser la règle! Important pour remplacer celles assignées à la div.

.myHTMLPanel { 
    width: auto !important; 
    height: auto !important; 
} 
0

Cela peut être dû au fait qu'un HTMLPanel est enveloppé dans un DeckPanel. Un DeckPanel ajoute "height: 100%" et "width: 100%" aux éléments.

Après avoir montré le widget, ajoutez le code suivant:

deckPanel.add(widget);  
deckPanel.showWidget(0); 
Element e = DOM.getParent(widget.getElement()); 
DOM.setStyleAttribute(e, "height", ""); 
DOM.setStyleAttribute(e, "width", ""); 
widget.setHeight(""); 
widget.gwtContainer.setWidth("");