我正在使用GWT 2.4,GWTP和Chrome 22.0.1229.94進行測試。我已經爲這個問題掙扎了好幾天。由於CSS延遲呈現,GWT/GWTP PopupDialog並不總是居中
在啓動時,我使用已擴展PopupViewImpl的視圖呈現自定義PopupDialog。在覆蓋的onRealal()方法中,我將對話框居中。 GWTP代碼同步並使用scheduleDeferred。
在開發模式和運行在本地服務器上編譯一切都按預期工作:彈出對話框始終呈現正確居中。我也在IE中測試過。
但是,當部署到Internet上的實時Web服務器時,我注意到當我使用F5刷新時,有時CSS在腳本嘗試將對話框居中之前未應用。這導致測量結果錯誤,對話框不在中心。有趣的是,這似乎只是偶爾發生,通常是在瀏覽器在調用所調度的延遲命令之前渲染所有(CSS)資源不夠快時。
所以,我已經嘗試以下操作:使用不同的技術(在HTML文件引用,引用GWT模塊,放在CssResouce)
- 加載CSS( ).scheduleDeferred作爲默認代碼也可以。
- 在onReveal中調用RootLayoutPanel.get()。onResize()以嘗試在居中推遲之前觸發某些佈局。
我注意到Chrome和IE中的相同行爲,所以它可能不是瀏覽器問題。我的問題是,在所有的CSS已經正確應用之後,或者如果還有其他事情可以強制CSS呈現,我的「中心」-call可以確保它被調用?
謝謝!
以下是在演示延伸PresenterWidget的onReveal代碼:
@Override
protected void onReveal() {
super.onReveal();
// Hide loading image
fireEvent(new HideApplicationLoadingImageEvent());
// Reset message
getView().setStatusMessage(null);
// Center the popup
getView().center();
}
你可以發佈你的onReveal()代碼適用於居中對話框嗎? –
在上面的帖子中添加了顯示代碼。 – Johan