由于CSS延迟渲染,GWT / GWTP PopupDialog并不总是居中

时间:2012-10-21 20:52:38

标签: css gwt centering gwt-platform gwtp

我正在使用GWT 2.4,GWTP和Chrome 22.0.1229.94进行测试。几天来,我一直在努力解决这个问题。

在启动时,我使用扩展了PopupViewImpl的视图呈现自定义PopupDialog。在重写的onReveal()方法中,我将对话框置于中心位置。 GWTP代码同步并使用scheduleDeferred。

在开发模式下,在本地服务器上运行的一切都按预期工作:弹出对话框始终呈现并正确居中。我也在IE中测试过。

但是,当部署到Internet上的实时Web服务器时,我注意到当我使用F5刷新时,有时在脚本尝试使对话框居中之前不会应用CSS。这导致测量错误,并且对话框不在中心。有趣的是,这似乎只是偶尔发生,通常是在调用调度的延迟命令之前浏览器在渲染所有(CSS)资源方面不够快时。

所以,我已经尝试了以下内容:

  1. 使用不同的技术加载CSS(HTML文件中的引用,GWT模块中的引用,放入CssResouce)
  2. 中心使用Scheduler.get()。scheduleDeferred作为默认代码也可以。
  3. 在onReveal中调用RootLayoutPanel.get()。onResize()以尝试在居中延迟之前触发一些布局。
  4. 我注意到Chrome和IE中的行为相同,因此可能不是浏览器问题。我的问题是在哪里放置我的“中心”-call以确保在正确应用所有CSS之后调用它,或者我还能做些什么来强制CSS渲染?

    谢谢!

    以下是Presenter中扩展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 个答案:

答案 0 :(得分:0)

方法addToPopupSlot(child,boolean center);如果您为中心参数发送true,则需要注意以GWTP为中心弹出示例: - addToPopupSlot(widget,true)