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');
	//    }
	//});
}

posted @ 2022-03-23 08:44  离。  阅读(558)  评论(0)    收藏  举报