layuiadmin关闭当前iframe,打开指定iframe
需求:从Banner_List页页打开Banner_ADD页面,子页面编辑后提交,关闭子页面,并打开父页面Banner_List,保持父页面不变
母页面CommonWeb.aspx部分代码
<ul class="layui-nav layui-layout-left">
<li class="layui-nav-item layadmin-flexible" lay-unselect>
<a href="javascript:;" layadmin-event="flexible" title="侧边伸缩">
<i class="layui-icon layui-icon-shrink-right" id="LAY_app_flexible"></i>
</a>
</li>
<%--<li class="layui-nav-item layui-hide-xs" lay-unselect>
<a href="http://www.layui.com/admin/" target="_blank" title="前台-跳新窗口">
<i class="layui-icon layui-icon-website"></i>
</a>
</li>--%>
<li class="layui-nav-item" lay-unselect>
<a href="javascript:;" layadmin-event="refresh" title="刷新">
刷新
</a>
</li>
<li class="layui-nav-item" lay-unselect>
<a href="javascript:;" onclick="window.history.go(-1)" title="后退">
后退
</a>
</li>
<%--<li class="layui-nav-item layui-hide-xs" lay-unselect>
<input type="text" placeholder="搜索..." autocomplete="off" class="layui-input layui-input-search" layadmin-event="serach" lay-action="template/search.html?keywords=">
</li>--%>
</ul>
打开iframe页面后生成的代码
<div class="layui-tab" lay-unauto lay-allowClose="true" lay-filter="layadmin-layout-tabs">
<ul class="layui-tab-title" id="LAY_app_tabsheader">
<li lay-id="home/console.html" lay-attr="home/console.html" class="layui-this"><i class="layui-icon layui-icon-home"></i></li>
<li lay-id="Banner_List.aspx" lay-attr="Banner_List.aspx" ><i class="layui-icon layui-icon-home"></i></li>
<li lay-id="Banner_ADD.aspx" lay-attr="Banner_List.aspx" ><i class="layui-icon layui-icon-home"></i></li>
</ul>
</div>
在浏览器F12查看对应

Banner_List页面跳转代码
<a lay-href="Banner_ADD.aspx?act=EdidData&id=123456">编辑</a>
Banner_ADD页面编辑完,在本页面调用方法
function saveData() {
var errorMsg = "";
var id = $("#hdid").val();
var title = $("#title").val();
var imgurl = $("#image_show").attr("src");//$(".image").val();
if (title == "") {
errorMsg = "请输入标题";
}
if (imgurl == "") {
imgurl = $("#hdImageURL").val();//如果没选择图片,就用隐藏域里的图
}
if (errorMsg != "") {
layer.msg(errorMsg, { icon: 7 });
return false;
}
//return false;?act=AddData
loadIndex = layer.load(0);
var url = "Banner_ADD.aspx";
$.ajax({
type: "POST",
url: url,
dataType: "JSON",
//contentType: "application/x-www-form-urlencoded",
data: { 'act': 'SaveData', 'id': id, 'title': title, 'imgurl': imgurl },
success: function (result) {
if (result.State) {
layer.close(loadIndex);
layer.msg("操作成功", { time: 3000 });
closeRefresh();//关闭当前iframe,刷新指定iframe
}
else {
layer.msg(result.ErrorMsg, { time: 3000 });
}
}, complete: function (result) {
layer.close(loadIndex);
}
});
}
//关闭当前iframe,刷新指定iframe
function closeRefresh() {
//方法一,会重新打开,把页面刷新了,不好用
//parent.layui.index.openTabsPage("Staff_List.aspx", "列表");//先打开要跳转的iframe
//parent.layui.admin.events.refresh();//刷新跳转后的iframe,调用母页面的刷新事件
//parent.removeIframe("Staff_ADD.aspx");//调用母页面的方法,传当前页的标识
//方法二,无刷新打开了父页面,但是左边导航和上面面包屑没有同步效果
//var ucrIframe = window.top.$("iframe[src='Staff_List.aspx']");//取得想要打开的iframe的对象
//$(ucrIframe).parent().attr("style", "display: block;");//先显示要打开的对象,才可执行下一句关闭当前页
//parent.removeIframe("Staff_ADD.aspx");//调用母页面的方法,传当前页的标识
//方法三,模拟点击父窗口的title,一切状态同步
var ucrIframe = window.top.$("li[lay-id='Staff_List.aspx']");
$(ucrIframe).click();
parent.removeIframe("Staff_ADD.aspx");//调用母页面的方法,传当前页的标识
}
移除当前iframe页的方法(parent.removeIframe("Banner_ADD.aspx");)要在母页面CommonWeb.aspx里定义
function removeIframe(iframeName) {
$("#LAY_app_tabsheader").find('li').each(function () {
//tmp = $(this).text();
var layid = $(this).attr("lay-id");
if (layid.indexOf(iframeName) == 0) {
$(this).remove();//移除当前iframe
//$(this).find('i').each(function () {//关闭当前iframe
// //alert("00");
// $(this).click();
// //alert($(this).attr("class"));
//});
}
});
$("#LAY_app_body").find('iframe').each(function () {
//tmp = $(this).text();
var layid = $(this).attr("src");
if (layid.indexOf(iframeName) == 0) {
$(this).parent().remove();//移除当前iframe生成的页面
}
});
//$("#LAY_app_tabsheader").each(function (index, item) {
// alert(index);
// alert(item);
// alert(item.getAttribute("lay-id"));
// //这边根据tab选项卡的lay-id(layui属性)查询属性值为/Emp7SSM/task/toTask,符合条件便是这个索引
// if (item.getAttribute("lay-id").indexOf("Banner_List.aspx") != -1) {
// //index是我们要的索引,即lay-id='/Emp7SSM/task/toTask',小白这里调用了上面那个自定义方法closeTaskTabs
// //admin.closeTaskTabs(index);
// $(TABS_HEADER).eq(index).find('.layui-tab-close').trigger('click');
// }
//});
}

浙公网安备 33010602011771号