问题是这样的,easyui的对话框dialog是在iframe页面里弹出的,所以有个问题就是这个弹出的对话框只在iframe页面范围,拖动的时候会被外层挡住。求教,如何才能使对话框弹出在最外层,不会存在被遮挡的问题。
想过几种可能的解决方法,但都没有解决。
1.是把弹框内容写到主页面,但是由于对话框很多,不可能都放到主页面,而且原本对话框就是在iframe页面的,如果全都放到主页面,代码太混乱;
2.网上有用window解决的,调用主页面方法。但是window跟dialog还是不一样的,dialog包含了交互信息,要提交的内容不希望通过主页面调用方法来实现。
3.z-index,设置了iframe里弹出对话框的z-index,但是不起作用。

解决方案 »

  1.   

    在父页打开dialog,而不是在iframe里面,easyui是层模拟的,不可能跨框架显示
    父页提供打开框架的方法,iframe调用就行了
    function opendDlg(){
    //...
    }iframe 
    parent.openDlg()
      

  2.   

    你好,能举个例子吗?因为我的对话框内容是写在iframe页面里的,这个方法是写在父页面,那么父页面要怎么写一个通用的方法去调用iframe页面的对话框内容?
      

  3.   

    <div id="dlg"></div>function opendDlg(content,title){
    $('#dlg').dialog({content:content,title:title})
    }你传递要显示的内容给openDlg就行了parent.opendDlg('dialog要显示的内容','dialog标题')
      

  4.   


    对话框的内容就是一些input,提交和取消按钮,我用的是easyui dialog的提交和取消按钮,这些都要写在content里吗?是一个string吗?
      

  5.   


    对话框的内容就是一些input,提交和取消按钮,我用的是easyui dialog的提交和取消按钮,这些都要写在content里吗?是一个string吗?
    是的,你直接放入父页的dlg那个容器中也行,就不需要配置content了
      

  6.   


    对话框的内容就是一些input,提交和取消按钮,我用的是easyui dialog的提交和取消按钮,这些都要写在content里吗?是一个string吗?
    是的,你直接放入父页的dlg那个容器中也行,就不需要配置content了
    对话框的内容就是一些input,提交和取消按钮,我用的是easyui dialog的提交和取消按钮,这些都要写在content里吗?是一个string吗?
    是的,你直接放入父页的dlg那个容器中也行,就不需要配置content了
    不能直接写到父页面里,因为提交和取消按钮是要携带input内容的,而且每个对话框的提交和取消按钮携带的信息都是不一样的。
      

  7.   

    iframe标签添加属性target=_parent或者target=_top
      

  8.   

    子页面除了可以传值,还可以传对象,在父页面处理完成后再将整个表单传回来到子页面,子页面要怎么处理都可以了参考:
    父页面:
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
        <link href="../JS/jquery-easyui-1.4/themes/gray/easyui.css" rel="stylesheet" />
    </head>
    <body>
        <iframe src="callParentDialog.html" style="width: 300px; height: 200px; border: 1px green solid;"></iframe>
        <div style="display: none;">
            <div id="dialog">
                <input id="test" type="text" value="这里的值将传回去" />
                <div id="ddd"><!--这里将接收子页面过来的控件--></div>
            </div>
        </div>
    </body>
    </html>
    <script src="../JS/jquery-easyui-1.4/jquery.min.js"></script>
    <script src="../JS/jquery-easyui-1.4/jquery.easyui.min.js"></script>
    <script type="text/javascript">
        function openDialog(callback, setText, container) {
            $('#ddd').append(setText);//将子页面的控件附加到对话框里面
            $('#dialog').dialog({
                title: '弹窗示例,关闭后回写数据',
                onClose: function () {
                    //这里回传一个对象回去,也可以传单个的值啥的
                    callback({ returnValue: document.getElementById('test').value });
                    setText.value = "从父页面回写子页面对象";
                    $(container).append(setText);
                },
                modal:true
            });
        }
    </script>
    子页面:
    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
    </head>
    <body>
        <input type="button" value="打开窗体" onclick="openDig();" /><br />
        接收后回写值:<input id="ret" type="text" /><br />
        父页面写入值:<span id="sss"><input id="getText" type="text" value="这个是子页面的控件" /></span>
    </body>
    </html>
    <script type="text/javascript">
        function openDig() {
            parent.openDialog(function (v) {
                document.getElementById('ret').value = v.returnValue;
            }, document.getElementById('getText')
            , document.getElementById('sss'));
        }
    </script>
    效果:
      

  9.   

    父页面:
    <div id="dlg" 
    style="width: 800px; height: 400px;"></div>function opendDlg(content,title){
    $('#dlg').dialog({content:content,title:title})
    }子Iframe:
    var content=$('<iframe id="pdfViewIframe" frameborder="0" scrolling="no" style="width: 100%; height: 100%;" src=""></iframe>');
    parent.opendDlg(content,'文档预览')