2012-10-21 25 views
2

我正在使用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)

  • 中心使用Scheduler.get

    1. 加載CSS( ).scheduleDeferred作爲默認代碼也可以。
    2. 在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(); 
    } 
    
  • +1

    你可以發佈你的onReveal()代碼適用於居中對話框嗎? –

    +0

    在上面的帖子中添加了顯示代碼。 – Johan

    回答

    0

    有方法addToPopupSlot(兒童,布爾中心);如果你發送真正的中心參數,它會照顧在GWTP中彈出對齊。例如: - addToPopupSlot(widget,true)