gwt modal popuppanel阻止iframe事件

时间:2012-09-17 07:42:02

标签: gwt

我有一个GWT应用程序,带有一个简单的“请稍候”机制。当我按下一个按钮发送一个RPC调用时,我在一个模式弹出对话框中放置了一个模块弹出对话框,该对话框阻止用户交互,直到RPC返回。像这样我防止用户多次点击按钮并发送多个RPC。这非常有效,除非在加载IFrame时。在这种情况下,我永远不会调用我在iframe上安装的loadhandler。

/**
 * Test class
 */
public class Test implements EntryPoint {

    /**
     * This is the entry point method.
     */
    @Override
    public void onModuleLoad() {
        final PopupPanel popup = new PopupPanel(false, true);
        popup.add(new Label("Please wait"));
        popup.center();

        final Frame frame = new Frame("http://www.google.com");
        frame.addLoadHandler(new LoadHandler() {
            @Override
            public void onLoad(LoadEvent event) {
                Window.alert("Event received");
                popup.hide();
            }
        });

        RootPanel.get().add(frame);
    }
}

但是,如果我构造一个PopupPanel(false,false),则会触发LoadEvent。 注意:这只发生在编译模式下,而不是GWT开发模式。

有人有线索吗?

提前谢谢你,

麦克

2 个答案:

答案 0 :(得分:2)

请勿使用modal弹出窗口,其中包含all sorts of issues。首选显示玻璃面板(setGlassEnabled)。

答案 1 :(得分:0)

模态窗口会阻止各种事件以确保模态。这需要找到解决方法。

我建议在点击时禁用该按钮,并在rpc成功或失败时启用它。

如果你需要一次禁用它们,那么你很可能需要实现自己的事件,在事件总线中注册它们并根据你的需要处理它们。