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 相关文章推荐
效率高的Javscript字符串替换函数的benchmark
Aug 02 Javascript
jquery validate poshytip 自定义样式
Nov 26 Javascript
jquery datepicker参数介绍和示例
Apr 15 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
Jun 02 Javascript
AngularJS基础 ng-switch 指令简单示例
Aug 03 Javascript
Ajax基础知识详解
Feb 17 Javascript
Ionic + Angular.js实现图片轮播的方法示例
May 21 Javascript
详解webpack 入门与解析
Apr 09 Javascript
webpack+vue-cil中proxyTable处理跨域的方法
Jul 20 Javascript
Vue实现渲染数据后控制滚动条位置(推荐)
Dec 09 Javascript
浅谈vue中$bus的使用和涉及到的问题
Jul 28 Javascript
vue中三级导航的菜单权限控制
Mar 31 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
PHP如何编写易读的代码
2007/07/10 PHP
php获得url参数中具有&的值的方法
2014/03/05 PHP
php强制文件下载而非在浏览器打开的自定义函数分享
2014/05/08 PHP
PHP使用php-resque库配合Redis实现MQ消息队列的教程
2016/06/29 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
javascript实现仿银行密码输入框效果的代码
2007/12/13 Javascript
在多个页面使用同一个HTML片段的代码
2011/03/04 Javascript
JavaScript 函数replace深入了解
2013/03/14 Javascript
js Array对象的扩展函数代码
2013/04/24 Javascript
jquery实现图片渐变切换兼容ie6/Chrome/Firefox
2013/08/02 Javascript
JavaScript中圆括号()和方括号[]的特殊用法疑问解答
2013/08/06 Javascript
javascript单引号和双引号的区别和处理
2014/05/14 Javascript
js处理表格对table进行修饰
2014/05/26 Javascript
jquery滚动加载数据的方法
2015/03/09 Javascript
jQuery实现指定区域外单击关闭指定层的方法【经典】
2016/06/22 Javascript
HTML5canvas 绘制一个圆环形的进度表示实例
2016/12/16 Javascript
JS检测是否可以访问公网服务器功能代码
2017/06/19 Javascript
JS全角与半角转化实例(分享)
2017/07/04 Javascript
浅谈angular.copy() 深拷贝
2017/09/14 Javascript
vue将对象新增的属性添加到检测序列的方法
2018/02/24 Javascript
jQuery实现点击旋转,再点击恢复初始状态动画效果示例
2018/12/11 jQuery
了解JavaScript函数中的默认参数
2019/05/30 Javascript
Python文件和目录操作详解
2015/02/08 Python
Python实现冒泡排序的简单应用示例
2017/12/11 Python
python3实现基于用户的协同过滤
2018/05/31 Python
一行python实现树形结构的方法
2019/08/09 Python
flask利用flask-wtf验证上传的文件的方法
2020/01/17 Python
Python 使用office365邮箱的示例
2020/10/29 Python
Snapfish爱尔兰:在线照片打印和个性化照片礼品
2018/09/17 全球购物
介绍一下.NET构架下remoting和webservice
2014/05/08 面试题
新闻专业本科生的自我评价分享
2013/11/20 职场文书
会计与审计专业自荐信范文
2014/03/15 职场文书
邮政竞聘演讲稿
2014/09/03 职场文书
终止劳动合同证明书样本
2014/11/19 职场文书
出纳2015年度工作总结范文
2015/10/14 职场文书
Go语言使用select{}阻塞main函数介绍
2021/04/25 Golang