首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gwt模式popuppanel阻止iframe事件

gwt模式popuppanel阻止iframe事件
EN

Stack Overflow用户
提问于 2012-09-17 15:42:02
回答 2查看 959关注 0票数 0

我有一个GWT应用程序,它有一个简单的“请等待”机制。当我按下一个按钮发送RPC调用时,我会在屏幕上显示一个模式弹出对话框,它会阻止用户交互,直到RPC返回。这样,我就可以防止用户多次单击该按钮并发送多个RPC。这可以完美地工作,除了在加载IFrame时。在这种情况下,我在iframe上安装的加载处理程序永远不会被调用。

代码语言:javascript
复制
/**
 * 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开发模式下不会发生。

有谁有线索吗?

先谢谢你,

麦克

EN

回答 2

Stack Overflow用户

发布于 2012-09-17 16:14:45

不要使用modal弹出窗口,它有all sorts of issues。更喜欢显示玻璃面板(setGlassEnabled)。

票数 2
EN

Stack Overflow用户

发布于 2012-09-17 21:53:59

模态窗口防止各种事件,以确保模态。这就是你需要找到解决办法的情况。

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12454986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档