1

我刚刚安装了最新的谷歌浏览器,并试图用 DialogBox 测试 GWT 2.3 代码;出于某种原因,选项 likesetGlassEnabled(true);以一种奇怪的方式工作:(

如果 chrome 的滚动窗格(y 位置为 0),则玻璃被正确绘制

但如果 chrome 的滚动窗格(y 位置 > 0),则玻璃保持在 0 位置,因此 chrome 的其余底部不会被玻璃覆盖:(

我要向我的构造函数展示第一个玻璃选项

...
public MyDIalog() {

        this.setGlassEnabled(true);
        this.setAnimationEnabled(true);
        this.setModal(true);
        this.setPreviewingAllNativeEvents(true);
...

我不太确定是什么导致了这个错误或什么,因为代码在 IE 和 FF 中运行良好:S

所以我猜在镀铬中,玻璃位置总是静态的或其他东西,它的位置总是

x,y{0,0} w,h{firstInitedWidth,firstInitedHeight}

所以我的问题是 chrome 有没有四处走走?

谢谢

4

3 回答 3

6

解决了:

创建您自己的扩展 PopupPanel 的类并添加:

    @Override
    public void setGlassEnabled(boolean enabled) {
        super.setGlassEnabled(enabled);
        Element glass = getGlassElement();
        if (glass != null) {
            glass.getStyle().setPosition(Position.FIXED);
        }
    }

这只是将玻璃面板的位置设置为固定而不是绝对。这使得面板不会随着滚动而移动。

于 2013-01-29T16:14:05.200 回答
0

奇怪....但我想最坏的情况是你可以在 CSS 中给玻璃样式一些疯狂的高度/宽度。

.gwt-PopupPanelGlass{
    height:15000 px;
    width:15000 px;
}
于 2012-04-06T19:49:35.610 回答
0

作为替代方案,无需设置宽度和高度,您始终可以将 CSS 属性设置为固定(使用 !important 指令)

.gwt-PopupPanelGlass {
    position:fixed!important;
}
于 2017-05-31T22:37:39.023 回答