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 相关文章推荐
javascript得到XML某节点的子节点个数的脚本
Oct 11 Javascript
JS 显示当前日期与时间的代码
Mar 24 Javascript
使用JavaScript构建JSON格式字符串实现步骤
Mar 22 Javascript
jQuery验证插件 Validate详解
Nov 20 Javascript
深入分析Cookie的安全性问题
Mar 01 Javascript
jquery实现静态搜索功能(可输入搜索文字)
Mar 28 jQuery
浅谈angular表单提交中ng-submit的默认使用方法
Sep 30 Javascript
深入解析koa之异步回调处理
Jun 17 Javascript
如何在微信小程序中实现Mixins方案
Jun 20 Javascript
ES6模板字符串和标签模板的应用实例分析
Jun 25 Javascript
解决layui中onchange失效以及form动态渲染失效的问题
Sep 27 Javascript
如何利用JavaScript实现二叉搜索树
Apr 02 Javascript
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
PHP提示Notice: Undefined variable的解决办法
2012/11/24 PHP
php魔术变量用法实例详解
2014/11/13 PHP
php+mysqli使用面向对象方式更新数据库实例
2015/01/29 PHP
PHP常见数组排序方法小结
2018/08/20 PHP
PHP实现会员账号单唯一登录的方法分析
2019/03/07 PHP
PHP进阶学习之依赖注入与Ioc容器详解
2019/06/19 PHP
火狐浏览器(firefox)下获得Event对象以及keyCode
2008/11/13 Javascript
JavaScript性能优化 创建文档碎片(document.createDocumentFragment)
2010/07/13 Javascript
浅谈Javascript面向对象编程
2011/11/15 Javascript
javascript字符串替换及字符串分割示例代码
2013/12/12 Javascript
使用js完成节点的增删改复制等的操作
2014/01/02 Javascript
js日期、星座的级联显示代码
2014/01/23 Javascript
js网页实时倒计时精确到秒级
2014/02/10 Javascript
js实现的点击数量加一可操作数据库
2014/05/09 Javascript
详解AngularJS实现表单验证
2015/12/10 Javascript
浅谈JavaScript 函数参数传递到底是值传递还是引用传递
2016/08/23 Javascript
Vue.js计算属性computed与watch(5)
2016/12/09 Javascript
JavaScript运动框架 解决速度正负取整问题(一)
2017/05/17 Javascript
解决vue router使用 history 模式刷新后404问题
2017/07/19 Javascript
微信小程序实现图片懒加载的示例代码
2017/12/13 Javascript
JS跨域请求的问题解析
2018/12/03 Javascript
使用原生js编写一个简单的框选功能方法
2019/05/13 Javascript
JavaScript实现无限轮播效果
2020/11/19 Javascript
django settings.py 配置文件及介绍
2019/07/15 Python
Django使用Jinja2模板引擎的示例代码
2019/08/09 Python
简单易懂Pytorch实战实例VGG深度网络
2019/08/27 Python
python字符串替换re.sub()实例解析
2020/02/09 Python
CSS3 简写animation
2012/05/10 HTML / CSS
大学生入党思想汇报
2014/01/14 职场文书
外贸采购员岗位职责
2014/03/08 职场文书
党员一帮一活动总结
2014/07/08 职场文书
课内比教学心得体会
2014/09/09 职场文书
质监局领导班子践行群众路线整改方案
2014/10/26 职场文书
JS如何实现基于websocket的多端桥接平台
2021/05/14 Javascript
关于HTML编码导致的乱码问题
2021/09/04 HTML / CSS
GO中sync包自由控制并发示例详解
2022/08/05 Golang