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 异步页面查询实现代码(asp.net)
May 26 Javascript
JavaScript检查数字是否为整数或浮点数的方法
Jun 09 Javascript
javascript字符串循环匹配实例分析
Jul 17 Javascript
js显示动态时间的方法详解
Aug 20 Javascript
微信小程序 LOL 英雄介绍开发实例
Sep 30 Javascript
jQuery给指定的table动态添加删除行的操作方法
Oct 12 Javascript
jQuery简单实现MD5加密的方法
Mar 03 Javascript
Three.js 再探 - 写一个微信跳一跳极简版游戏
Jan 04 Javascript
浅谈vue的几种绑定变量的值 防止其改变的方法
Mar 01 Javascript
vue同步父子组件和异步父子组件的生命周期顺序问题
Oct 07 Javascript
element-ui 时间选择器限制范围的实现(随动)
Jan 09 Javascript
layui监听单元格编辑前后交互的例子
Sep 16 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
DISCUZ在win2003环境下 Unable to access ./include/common.inc.php in... 的问题终极解决方案
2011/11/21 PHP
PHP和MYSQL实现分页导航思路详解
2017/04/11 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
YII2.0框架行为(Behavior)深入详解
2019/07/26 PHP
激活 ActiveX 控件
2006/10/09 Javascript
js判断变量是否未定义的代码
2020/03/28 Javascript
js中复制行和删除行的操作实例
2013/06/25 Javascript
jquery果冻抖动效果实现方法
2015/01/15 Javascript
easyui导出excel无法弹出下载框的快速解决方法
2016/11/10 Javascript
Bootstrap CSS组件之导航条(navbar)
2016/12/17 Javascript
JS获得一个对象的所有属性和方法实例
2017/02/21 Javascript
JavaScript使用readAsDataUrl方法预览图片
2017/05/10 Javascript
JavaScript之排序函数_动力节点Java学院整理
2017/06/30 Javascript
详解 vue better-scroll滚动插件排坑
2018/02/08 Javascript
解决vue js IOS H5focus无法自动弹出键盘的问题
2018/08/30 Javascript
微信小程序 swiper 组件遇到的问题及解决方法
2019/05/26 Javascript
详解ES6新增字符串扩张方法includes()、startsWith()、endsWith()
2020/05/12 Javascript
js实现自定义滚动条的示例
2020/10/27 Javascript
[00:48]完美“圣”典2016风云人物:xiao8宣传片
2016/11/30 DOTA
[39:00]Optic vs VP 2018国际邀请赛淘汰赛BO3 第三场 8.24
2018/08/25 DOTA
对python中的乘法dot和对应分量相乘multiply详解
2018/11/14 Python
Python流程控制语句的深入讲解
2020/06/15 Python
python爬虫筛选工作实例讲解
2020/11/23 Python
便携式太阳能系统的创新者:GOAL ZERO
2018/02/04 全球购物
美国领先的男士和女士内衣购物网站:Freshpair
2019/02/25 全球购物
优秀经理事迹材料
2014/02/01 职场文书
小学教师师德师风自我剖析材料
2014/09/29 职场文书
2014幼儿园小班工作总结
2014/11/10 职场文书
大学生预备党员自我评价
2015/03/04 职场文书
英语通知范文
2015/04/22 职场文书
入党培养人考察意见
2015/06/08 职场文书
2016年秋季开学典礼新闻稿
2015/11/25 职场文书
解决redis sentinel 频繁主备切换的问题
2021/04/12 Redis
详解jQuery的核心函数和事件处理
2022/02/18 jQuery
gojs实现蚂蚁线动画效果
2022/02/18 Javascript