layer在多层嵌套的iframe页面中关闭打开的layer弹出框的问题

layer父子层之间的常用操作

访问父页面的方法或者值的方法

访问父页面元素值

var parentId=parent.$("#id").val();//

访问父页面方法 

var parentMethodValue=parent.getMethodValue();//

关闭弹出层的问题

大概分成以下三种情况:

对应当前页面的某个弹出层

var index=layer.open();

var index=layer.alert();

var index=layer.load();

var index=layer.tips();

这样弹出的层都有对应的索引,需要关闭他们的时候直接关闭对应的层即可:layer.close(index);

如果是关闭最新的弹出层的时候

layer.close(layer.index)  它获取的始终是最新弹出的某个层,值是由layer内部动态递增计算的

 

如果在子窗口中弹出对应的layer层时候,如要关闭的时候一般采用如下方法

在iframe页面关闭自身时

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

parent.layer.close(index);

此方法一般用于在iframe页关闭自身时用到

//假设这是iframe页
var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
parent.layer.close(index); //再执行关闭 


在实际项目中碰到如下情况

A-父iframe  b-子iframe 在b中需要打开一个新的弹出层

top.layer.open({
                    type: 2,//这就是定义窗口类型的属性
                    title: '客服登录',
                    shadeClose: true,
                    shade: 0.3,
                    offset: "20%",
                    shadeClose : false,
                    area: ['60%','60%'],
                    content: res.data
                });

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

 

关闭弹出层的子页面窗口

var index = parent.layer.getFrameIndex(window.name); //获取窗口索引 

parent.layer.close(index);//关闭弹出的子页面窗口

在子页面刷新父页面

parent.location.reload(); // 父页面刷新

 

二 父子层之间传值,传参

父子层之间传值传参的核心方法为:

layer.getChildFrame(selector, index) - 获取iframe页的DOM

其中,selector为iframe页面的选择器,用来选中iframe页面的元素。Index为层的索引。

1 在父页面上完成对子页面的数据渲染

在layer弹出层成功够,会回调success方法,重写该方法即可实现对子页面的数据渲染。

Layer.open(

{

success:function(layero, index){

Var body = layer.getChildFrame(“body”,index);//绑定父子之间的关系,用于数据传递,缺少则无法传递

var iframeWin = window[layero.find('iframe')[0]['name']]; //得到iframe页的窗口对象

//获取子页面的元素,进行数据渲染

}

})

2 在子页面完成数据渲染


Layer.open(

{

success: function(layero, index){

Var body = layer.getChildFrame(“body”,index);//绑定父子之间的关系,用于数据传递,缺少则无法传递

var iframeWin = window[layero.find('iframe')[0]['name']];//得到iframe页的窗口对象

//调用子页面的方法,将父页面的值作为参数传递过去

iframeWin.method(pre);

}

})


 


 

你可能感兴趣的:(原生javascript)