我正在开发一个GWT项目,我遇到了一个有问题的跨浏览问题。
使用firefox时,所有页面的显示都有问题。我找到了原因: 在UIBinder中,我的每个页面都被“g:HTMLPanel”包装:在xml文件的开头和结尾处,包装所有页面的内容
执行此操作时,生成的面板代码如下:
div style="width: 100%; height: 100%; ....
问题是“身高:100%”。如果我用firebug将其移除,显示效果会很好。 所以我的目标是以编程方式删除生成的100%高度..但没办法做到! 我尝试了所有东西:setHeight,setSize,使用getElement()方法处理Element本身。方法()...我尝试做了类似style.clear()的事情,一切都有机会工作..但是在生成中代码“身高:100%”将始终存在。如果我将它的高度设置为“50%”或“50px”则完全没有效果。
我甚至尝试给它一个ID,然后使用纯javascript改变它的风格,但也没有解决方案..
注意:我确信我正在使用正确的元素:例如,添加styleName效果很好。
有什么想法吗?
我的帮助将非常感激,我不知道如何删除这些生成的代码,我已经找了好几个小时:(:( :( :(
致以最诚挚的问候,
尼尔斯
答案 0 :(得分:0)
我刚从firebug中的uibinders检查了GWT生成的一些代码,并且< g:HTMLPanel>没有添加任何宽度或高度样式。
我没有< g:HTMLPanel>作为我的uibinder中的根元素,我有自己的类。
<a:FormPanel ui:field="form">
<g:HTMLPanel>
<input type="hidden" ui:field="discoveryId" />
<table cellpadding="2" cellspacing="0" class="{widgets.gridPanel}">
<tr>
<td>Name:*</td>
使用说FlowPanel作为根uibinder类,然后使用HTMLPanel?
如果失败,你总是可以使用!important css规则覆盖div上分配的规则。
.myHTMLPanel {
width: auto !important;
height: auto !important;
}
答案 1 :(得分:0)
这可能是因为HTMLPanel被包装到DeckPanel中。 DeckPanel将“height:100%”和“width:100%”添加到元素中。
显示窗口小部件后,添加以下代码:
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("");