iframe层中的页面调用layer.open无效

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iframe层中的页面调用layer.open无效相关的知识,希望对你有一定的参考价值。

iframe层中的页面调用layer.open无效该怎么破?请教

可以使用iframeWin.method(); 来执行父页面上的JS方法,
iframeWin 是通过window[layero.find('iframe')[0]['name']]来获取,其中要用到layero这个变量,它是通过success这个function传入,一直到这里都没有问题!追问

这个页面是在IFRAME中打开的,在这个页面里layer.open,没效果,大侠,我没看懂你的意思...

参考技术A 我也遭遇这个问题,我使用parent.layer.open 在子页面调用上层页面的layer来解决的。期待真正的解决方案

使用iframe框架打开页面(layer.open)并存在嵌套时怎样获取到嵌套内的框架对象?

首先,在使用layer.open打开的页面内使用

var index = parent.layer.getFrameIndex(window.name);

获取当前所打开框架的索引序号,并把此序号传送给下一级打开的窗口页面,那么在这个页面上使用:

var $obj = $.currentIframe().frames[‘layui-layer-iframe‘+index];

就可以获取到上一级页面的所有元素对象

例子:

打开“详情”页

function detail(keyValue) {
        layer.open({
            id: ‘Detail‘,
            type: 2,
            title: ‘详情‘,
            shadeClose: true,
            anim: 7,
            isOutAnim: 2,
            move: false,
            offset: ‘rb‘,
            area: [‘70%‘, ‘100%‘],
            content: ‘../../Manage/Detail?keyValue=‘ + keyValue
        })
    }

在“详情”页上打开另一页面“反馈”页

 function feedback() {
        var index = parent.layer.getFrameIndex(window.name);
        dialogOpen({
            id: ‘FeedbackForm‘,
            title: ‘反馈‘,
            width: ‘400px‘,
            height: ‘320px‘,
            url: ‘/Manage/FeedbackForm?index =‘ + index ,
            callBack: function (iframeId) {
                top.frames[iframeId].AcceptClick();
            }
        })
    }

在“反馈”页上调用“详情”页上的元素及各对象

//保存
    function AcceptClick() {
        $.SaveForm({
           ...
            success: function () {
                if (keyValue) {
                    var $obj = $.currentIframe().frames[‘layui-layer-iframe‘+index];
                    var nowTime = new Date();
                    var addTime = nowTime.Format("yyyy-MM-dd HH:mm");
                    if (postData["FeedbackStatus"] == 1) {
                        if (postData["Content"] == "")
                            postData["Content"] = "正常通过";
                        $.currentIframe().$("#gridTable").trigger("reloadGrid");
                    }
                    var jsonStr = ‘{"Attachment":"‘ + postData["Attachment"] + ‘","Content":"‘ + postData["Content"] + ‘","CreateTime":"‘ + addTime + ‘","CreateUserName":""}‘;
                    $obj.$("#newData").val(jsonStr);
                    $obj.$("#newData").trigger("click");
                } else {
                    $.currentIframe().$("#gridTable").trigger("reloadGrid");
                }                             
                    
            }
        })
    }

 

以上是关于iframe层中的页面调用layer.open无效的主要内容,如果未能解决你的问题,请参考以下文章

layer通过父页面调用子页面的方法及属性

layer.open Iframe弹窗 除了地址栏传参,怎么给子页面传递参数

使用iframe框架打开页面(layer.open)并存在嵌套时怎样获取到嵌套内的框架对象?

layer.open如何在iframe层关闭自己

layer iframe加载单个图片或者加载页面

layer弹出层的iframe页面回调