2

テストにはGWT2.4、GWTP、Chrome22.0.1229.94を使用しています。私はこの問題に何日も苦労してきました。

起動時に、PopupViewImplを拡張したビューを使用してカスタムPopupDialogを表示します。オーバーライドされたonReveal()メソッドで、ダイアログを中央に配置します。GWTPコードは同期的に集中し、scheduleDeferredも使用します。

開発モードでローカルサーバーに準拠して実行すると、すべてが期待どおりに機能します。ポップアップダイアログは常に正しくレンダリングされ、中央に配置されます。IEでもテストしました。

ただし、インターネット上のライブWebサーバーに展開する場合、F5を使用して更新すると、スクリプトがダイアログを中央に配置しようとする前にCSSが適用されないことがあります。これにより、測定が正しくなくなり、ダイアログが中央に配置されません。興味深いことに、これは時々発生するようです。通常、スケジュールされた遅延コマンドが呼び出される前に、ブラウザーがすべての(CSS)リソースをレンダリングするのに十分な速度がない場合です。

だから、私はすでに次のことを試しました:

  1. さまざまな手法を使用したCSSのロード(HTMLファイルでの参照、GWTモジュールでの参照、CssResouceでの参照)
  2. デフォルトのコードとしてScheduler.get()。scheduleDeferredを使用して中央に配置します。
  3. onRevealでRootLayoutPanel.get()。onResize()を呼び出して、据え置きを延期する前にレイアウトをトリガーしようとします。

ChromeとIEで同じ動作に気付いたので、ブラウザの問題ではない可能性があります。私の質問は、「センター」をどこに配置するかです。すべてのCSSが適切に適用された後に呼び出されるようにするために呼び出します。または、CSSを強制的にレンダリングするために他にできることがあるかどうかを確認します。

ありがとう!

PresenterWidgetを拡張するPresenterのonRevealコードは次のとおりです。

@Override
protected void onReveal() {
    super.onReveal();

    // Hide loading image
    fireEvent(new HideApplicationLoadingImageEvent());

    // Reset message
    getView().setStatusMessage(null);

    // Center the popup
    getView().center();
}
4

1 に答える 1

0

addToPopupSlot(child, boolean center); メソッドがあります。center 引数に true を送信すると、GWTP でポップアップが中央に配置されます。例:- addToPopupSlot(widget, true)

于 2012-11-29T14:47:25.307 に答える