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 27 Javascript
jquery实现标签上移、下移、置顶
Apr 26 Javascript
原生javascript实现解析XML文档与字符串
Mar 01 Javascript
JS判断元素是否在数组内的实现代码
Mar 30 Javascript
浅谈js基本数据类型和typeof
Aug 09 Javascript
微信小程序后台解密用户数据实例详解
Jun 28 Javascript
基于bootstrap写的一点localStorage本地储存
Nov 21 Javascript
VueAwesomeSwiper在VUE中的使用以及遇到的一些问题
Jan 11 Javascript
微信小程序自定义对话框弹出和隐藏动画
Jul 19 Javascript
详解小程序开发经验:多页面数据同步
May 18 Javascript
JS+CSS+HTML实现“代码雨”类似黑客帝国文字下落效果
Mar 17 Javascript
详解JavaScript作用域 闭包
Jul 29 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中inlcude()性能对比详解
2012/09/16 PHP
linux下编译安装memcached服务
2014/08/03 PHP
php读取目录及子目录下所有文件名的方法
2014/10/20 PHP
php实现四舍五入的方法小结
2015/03/03 PHP
四个PHP非常实用的功能
2015/09/29 PHP
JavaScript实现动态增加文件域表单
2009/02/12 Javascript
比Jquery的document.ready更快的方法
2010/04/28 Javascript
js有关元素内容操作小结
2011/12/20 Javascript
jquery ready函数、css函数及text()使用示例
2013/09/27 Javascript
javascript制作网页图片上实现下雨效果
2015/02/26 Javascript
AngularJS 单元测试(二)详解
2016/09/21 Javascript
javascript 判断是否是微信浏览器的方法
2016/10/09 Javascript
ajax 提交数据到后台jsp页面及页面跳转问题
2017/01/19 Javascript
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
2017/05/08 jQuery
layer.confirm取消按钮绑定事件的方法
2018/08/17 Javascript
Javascript作用域和作用域链原理解析
2020/03/03 Javascript
微信小程序12行js代码自己写个滑块功能(推荐)
2020/07/15 Javascript
解决Vue中使用keepAlive不缓存问题
2020/08/04 Javascript
[49:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 KG VS TNC
2018/03/31 DOTA
python正则表达式判断字符串是否是全部小写示例
2013/12/25 Python
浅谈python中的占位符
2017/11/09 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
2017/12/03 Python
python爬虫爬取网页表格数据
2018/03/07 Python
Python实现深度遍历和广度遍历的方法
2019/01/22 Python
python常用函数与用法示例
2019/07/02 Python
HTML5实现一个能够移动的小坦克示例代码
2013/09/02 HTML / CSS
美国知名男士服饰品牌:Brooks Brothers(布克兄弟)
2016/08/25 全球购物
美团网旗下网上订餐平台:美团外卖
2020/03/05 全球购物
加拿大户外探险购物网站:SAIL
2020/06/27 全球购物
What's the difference between Debug and Trace class? (Debug类与Trace类有什么区别)
2013/09/10 面试题
小学岗位竞聘方案
2014/01/22 职场文书
大学军训感言400字
2014/03/11 职场文书
党员公开承诺书范文
2014/03/25 职场文书
考试诚信承诺书
2014/05/23 职场文书
环境建议书
2015/02/04 职场文书
自主招生专家推荐信
2015/03/26 职场文书