0

我正在开发一个 GWT 项目,但遇到了一个有问题的跨浏览器问题。

使用firefox时,所有页面的显示都有问题。我找到了原因:在 UIBinder 中,我的每个页面都由“g:HTMLPanel”包裹:在 xml 文件的开头和结尾处,包裹所有页面的内容

执行此操作时,面板的生成代码如下所示:

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

问题是“高度:100%”。如果我用萤火虫删除它,显示是完美的。所以我的目标是以编程方式删除生成的 100% 高度。但没有办法做到这一点!我尝试了所有方法:setHeight、setSize、使用 getElement().methods() 处理元素本身... “高度:100%”将始终存在的代码。如果我将它的高度设置为“50%”或“50px”,它根本没有效果。

我什至试图给它一个 ID,然后用纯 JavaScript 来改变它的风格,但也没有解决方案..

注意:我确信我正在处理正确的元素:例如,添加一个 styleName 效果很好。

任何想法 ?

非常感谢您的帮助,我不知道如何删除这部分生成的代码,而且我已经找了好几个小时了:(:(:(:(

此致,

尼尔斯

4

2 回答 2

0

我刚刚在 firebug 中检查了 GWT 从我的 uibinder 生成的一些代码,并且 < 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;
}
于 2010-05-18T14:56:02.670 回答
0

这可能是因为 HTMLPanel 被包装到了 DeckPanel 中。DeckPanel 向元素添加“高度:100%”和“宽度: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("");
于 2010-06-22T09:56:54.483 回答