0

私は GWT プロジェクトを開発していますが、問題のあるクロスブラウザーの問題に遭遇しました。

firefox を使用している場合、すべてのページの表示に問題があります。理由を見つけました: UIBinder では、各ページが "g:HTMLPanel" でラップされています: xml ファイルの最初と最後で、すべてのページのコンテンツをラップします。

これを行うと、生成されたパネルのコードは次のようになります。

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

問題は「高さ:100%」です。firebugで消せば完璧な表示です。したがって、私の目標は、生成された100%の高さをプログラムで削除することです..しかし、それを行う方法はありません! 私はすべてを試しました: setHeight、setSize、getElement().methods() を使用して Element 自体に取り組んでいます... style.clear() など、機能する可能性のあるすべてのことを試みました..しかし、生成された「高さ:100%」というコードは常にそこにあります。高さを「50%」または「50px」に設定しても、まったく効果がありません。

私はそれにIDを付けようとしましたが、純粋なjavascriptを使用してスタイルを変更しましたが、解決策もありません..

注 : 私は正しい要素に取り組んでいると確信しています。たとえば、styleName を追加するとうまくいきます。

何か案が ?

あなたの助けは本当にありがたいです、私は生成されたコードのこのビットを削除する方法の手がかりがなく、私はすでに何時間も探していました :(:(:(:(

よろしくお願いします、

ニルス

4

2 に答える 2

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("");
于 2010-06-22T09:56:54.483 に答える
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;
}
于 2010-05-18T14:56:02.670 に答える