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


Posted in Javascript onNovember 15, 2017

本文实例讲述了layer实现关闭弹出层刷新父界面功能。分享给大家供大家参考,具体如下:

layer是一款近年来备受青睐的web弹层组件,她具备全方位的解决方案,致力于服务各水平段的开发人员,您的页面会轻松地拥有丰富友好的操作体验。

最近一个项目采用的是hui前端框架,他的弹出层就是用的layer插件,对于弹出层,有一个操作体验大家都知道,就是关闭弹出层,需要刷新父页面。开始写的时候,我陷入了自己的误区,在弹出层处理成功之后,我调用的是:

var index = parent.layer.getFrameIndex(window.name);
parent.location.href=url;
parent.layer.close(index);

这个地方是这样写也没错,但是如果这么写,它就只能被一个地方调用了,如果有多个地方调用的话,它不能返回原地址,而是重定向到新的url地址上去了。而刚好,在我的项目中间,某一个弹出层被两个地方调用了,所以很明显这种方案就不合适了,需要优化。百度了一下,找到如下两种优化方案:

方案一:

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

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

方案二:

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

end - 层销毁后触发的回调

类型:Function,默认:null

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

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

function openLayer() {
  //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弹出框处理完成之后,就不需要调用其他刷新操作函数了,直接关闭就行了

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

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

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

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

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

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

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

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

附上代码:

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

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

另:layui完整源码可点击此处本站下载

希望本文所述对大家基于layui框架的程序设计有所帮助。

Javascript 相关文章推荐
jquery获得页面元素的坐标值实现思路及代码
Apr 15 Javascript
JS刷新父窗口的几种方式小结(推荐)
Nov 09 Javascript
移动端基础事件总结与应用
Jan 12 Javascript
jQuery插件zTree实现删除树节点的方法示例
Mar 08 Javascript
Vue集成Iframe页面的方法示例
Dec 12 Javascript
JavaScript使用闭包模仿块级作用域操作示例
Jan 21 Javascript
详解Vue中使用Axios拦截器
Apr 22 Javascript
微信小程序项目总结之记账小程序功能的实现(包括后端)
Aug 20 Javascript
解决Vue.js应用回退或刷新界面时提示用户保存修改问题
Nov 24 Javascript
vue-cli3项目升级到vue-cli4 的方法总结
Mar 19 Javascript
基于 Vue 的 Electron 项目搭建过程图文详解
Jul 22 Javascript
vue使用v-model进行跨组件绑定的基本实现方法
Apr 28 Vue.js
layui.js实现的表单验证功能示例
Nov 15 #Javascript
javascript函数的节流[throttle]与防抖[debounce]
Nov 15 #Javascript
基于jQuery实现定位导航位置效果
Nov 15 #jQuery
详解如何使用PM2将Node.js的集群变得更加容易
Nov 15 #Javascript
vuejs实现本地数据的筛选分页功能思路详解
Nov 15 #Javascript
Js判断H5上下滑动方向及滑动到顶部和底部判断的示例代码
Nov 15 #Javascript
实现div内部滚动条滚动到底部和顶部的代码
Nov 15 #Javascript
You might like
mysql5详细安装教程
2007/01/15 PHP
PHP去除数组中重复的元素并按键名排序函数
2008/08/18 PHP
PHP中数组定义的几种方法
2013/09/01 PHP
php创建桌面快捷方式实现方法
2015/12/31 PHP
深入解析PHP的Yii框架中的event事件机制
2016/03/17 PHP
Js 回车换行处理的办法及replace方法应用
2013/01/24 Javascript
javascript 实现键盘上下左右功能的小例子
2013/09/15 Javascript
javascript基础知识分享之类与函数化
2016/02/13 Javascript
js下将金额数字每三位一逗号分隔
2016/02/19 Javascript
JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析
2016/12/25 Javascript
非常优秀的JS图片轮播插件Swiper的用法
2017/01/03 Javascript
JS获得多个同name 的input输入框的值的实现方法
2017/01/09 Javascript
js实现文字选中分享功能
2017/01/25 Javascript
使用JavaScriptCore实现OC和JS交互详解
2017/03/28 Javascript
vue子组件使用自定义事件向父组件传递数据
2017/05/27 Javascript
使用JavaScript根据图片获取条形码的方法
2017/07/04 Javascript
微信小程序实现点赞、取消点赞功能
2018/11/02 Javascript
Python中使用ElementTree解析XML示例
2015/06/02 Python
Python3实现的画图及加载图片动画效果示例
2018/01/19 Python
python 中的list和array的不同之处及转换问题
2018/03/13 Python
python3实现163邮箱SMTP发送邮件
2018/05/22 Python
详解win10下pytorch-gpu安装以及CUDA详细安装过程
2021/01/28 Python
大学考试作弊检讨书
2014/01/30 职场文书
动漫专业高职生职业生涯规划书
2014/02/15 职场文书
保健品市场营销方案
2014/03/31 职场文书
公职人员索取回扣检举信
2014/04/04 职场文书
反腐倡廉演讲稿
2014/05/22 职场文书
毕业生面试求职信
2014/06/23 职场文书
小学生田径运动会广播稿
2014/09/11 职场文书
简单租房协议书(范本)
2014/10/13 职场文书
2015年园林绿化工作总结
2015/05/23 职场文书
个人收入证明格式
2015/06/24 职场文书
大学生社会服务心得体会
2016/01/22 职场文书
乡镇干部学习心得体会
2016/01/23 职场文书
2019学生会干事辞职信
2019/06/27 职场文书
Python何绘制带有背景色块的折线图
2022/04/23 Python