前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >layer实现关闭弹出层刷新父界面功能详解

layer实现关闭弹出层刷新父界面功能详解

作者头像
超级小可爱
发布2023-02-20 11:25:58
4.6K0
发布2023-02-20 11:25:58
举报
文章被收录于专栏:小孟开发笔记

方案一:

在layer弹出层中调用父界面重新加载函数

1 2 3

window.parent.location.reload(); varindex = parent.layer.getFrameIndex(window.name); parent.layer.close(index);

方案二:

调用layer插件的end回调方法:

end – 层销毁后触发的回调

类型:Function,默认:null

无论是确认还是取消,只要层被销毁了,end都会执行,不携带任何参数。

父窗口打开layer弹出框时,添加end回调

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

functionopenLayer() {   //iframe层     parent.layer.open({       type: 2,       title:’修改’,       shadeClose:false,//点击遮罩关闭       shade: 0.8,       area: ‘30%’,’45%’,       maxmin:true,       closeBtn: 1,       content: url,’yes’,//iframe的url,yes是否有滚动条       end:function() {         location.reload();       } });

layer弹出框处理完成之后,就不需要调用其他刷新操作函数了,直接关闭就行了

1 2

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

相比较而言,第一种方案会更佳,因为在操作逻辑上,手动关闭弹出框,应该不触发刷新操作,只有当弹出框的处理逻辑执行成功后,调用函数关闭弹出框才触发父界面刷新操作,基于这个逻辑,应该选择方案一。方案二,不管怎样都会刷新页面,实际上无端的增加了服务器的处理压力。

方案二:可以解决子页面处理后的结果发送给子页面的父页面的问题。

对于layer.js出现回调关闭父类的弹出层时,之前的表单的submit失效的问题:

如何解决:网上有很多,有的是转为ajax的请求,在数据传输完再关闭父类的弹出层:

下面是关闭父弹出层的办法:

1 2

varindex = parent.layer.getFrameIndex(window.name);//获取窗口索引 parent.layer.close(index);// 关闭layer

采用ajax这样可以,但是我做的是支付,要弹出页面才能支付,不能转换为ajax,怎么帮?后面我老大说:“你就不能晚点执行关闭吗”?这是一个想法试了一下就好了。

附上代码:

1 2 3 4 5

$(“#myForm”).submit(); varindex = parent.layer.getFrameIndex(window.name);//获取窗口索引 setTimeout(function() {   parent.layer.close(index);// 关闭layer },500);

我还需要在关闭父类窗口后再打开一个窗口,则怎么解决,后面发现layer.js留有一个好的方式,那就是调用父窗口的方法,这个不受子窗口的影响,通过:parent.父类方法名(参数)这样就可以了,在父窗口中再调用layer.js的弹出就好了。

未经允许不得转载:肥猫博客 » layer实现关闭弹出层刷新父界面功能详解

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档