多级iframe下layer.open到顶级页面
多级iframe布局下的页面layer.open默认会在当前页面open,需要open到顶级页面可以在layer.open前面添加parent或top。
如:
父页面打开窗口
var openl;
/**
* 编辑部门
*/
function edit(id) {
var title = "添加部门", height = "65%";
var url = "${request.contextPath}/dept/getDeptEdit?type=add";
if (id != 'null') {
title = "编辑部门";
height = "80%";
url = "${request.contextPath}/dept/getDeptEdit?type=edit";
}
openl = top.layer.open({
type: 2,
title: title,
shade: 0.8,
shadeClose: true,
area: ['50%', height],
content: url
});
}
/**
* 子页面回调
* 关闭open窗口
*/
function closeopenl() {
top.layer.close(openl);
if (counts != 0 && counts % ipageNum == 0)
ipageNum += 1;
selectPage(ipageNum);
}
子页面调用
$.post(url, $("#edit_form").serialize(), function (data) {
if (data.status) {
layer.msg(data.data, {icon: 1, time: 1000}, function () {
//因为本窗口是通过top.layer.open打开的,就不能用parent来调用父级页面的方法,
// 所以需要从top进行iframe定位,到父级页面的iframe来进行父级方法调用。
//调用父页面方法,关闭本页面,并刷新父页面列表
top.frames["iframe_main"]["iframe"].closeopenl();
});
} else {
layer.msg(data.data, {icon: 2, time: 2000});
}
}, "json");