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 函数参数是传值(byVal)还是传址(byRef) 分享
Jul 02 Javascript
jquery slibings选取同级其他元素的实现代码
Nov 15 Javascript
document.compatMode的CSS1compat使用介绍
Apr 03 Javascript
Javascript中With语句用法实例
May 14 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
Dec 19 Javascript
js oncontextmenu事件使用详解
Mar 25 Javascript
详解Angular5路由传值方式及其相关问题
Apr 28 Javascript
三种Webpack打包方式(小结)
Sep 19 Javascript
在vue项目中优雅的使用SVG的方法实例详解
Dec 03 Javascript
微信小程序实现文字无限轮播效果
Dec 28 Javascript
js实现贪吃蛇小游戏
Oct 29 Javascript
微信h5静默和非静默授权获取用户openId的方法和步骤
Jun 08 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 array_push()数组函数:将一个或多个单元压入数组的末尾(入栈)
2011/07/12 PHP
php一个文件搞定微信jssdk配置
2016/12/12 PHP
Laravel解决nesting level错误和隐藏index.php的问题
2019/10/12 PHP
Code:loadScript( )加载js的功能函数
2007/02/02 Javascript
JavaScript异步编程:异步数据收集的具体方法
2013/08/19 Javascript
jquery 自定义容器下雨效果可将下雨图标改为其他
2014/04/23 Javascript
JavaScript打印网页指定区域的例子
2014/05/03 Javascript
javascript动态创建链接的方法
2015/05/13 Javascript
jQuery实现网页顶部固定导航效果代码
2015/12/24 Javascript
微信jssdk用法汇总
2016/07/16 Javascript
JavaScript第一篇之实现按钮全选、功能
2016/08/21 Javascript
使用JavaScript获取Request中参数的值方法
2016/09/27 Javascript
flag和jq on 的绑定多个对象和方法(必看)
2017/02/27 Javascript
JS改变页面颜色源码分享
2018/02/24 Javascript
layui使用form表单实现post请求页面跳转的方法
2019/09/14 Javascript
微信小程序实现滚动加载更多的代码
2019/12/06 Javascript
jQuery实现的解析本地 XML 文档操作示例
2020/04/30 jQuery
小程序瀑布流组件实现翻页与图片懒加载
2020/05/19 Javascript
深入浅析Python字符编码
2015/11/12 Python
Python脚本实时处理log文件的方法
2016/11/21 Python
Python matplotlib 画图窗口显示到gui或者控制台的实例
2018/05/24 Python
修改python plot折线图的坐标轴刻度方法
2018/12/13 Python
python自动化工具之pywinauto实例详解
2019/08/26 Python
flask框架json数据的拿取和返回操作示例
2019/11/28 Python
python对Excel的读取的示例代码
2020/02/14 Python
Python爬虫实现vip电影下载的示例代码
2020/04/20 Python
python3实现简单飞机大战
2020/11/29 Python
python反编译教程之2048小游戏实例
2021/03/03 Python
Sunglasses Shop英国:欧洲领先的太阳镜在线供应商之一
2018/09/19 全球购物
英国玛莎百货新西兰:Marks & Spencer New Zealand
2019/07/21 全球购物
美国手机支架公司:PopSockets
2019/11/27 全球购物
单位工程竣工验收方案
2014/03/16 职场文书
2015年重阳节主持词
2015/07/04 职场文书
初中生入团申请书范文(五篇)
2019/10/16 职场文书
Python激活Anaconda环境变量的详细步骤
2021/06/08 Python
《模拟人生4》推出新补丁 “婚礼奇缘”DLC终于得到修复
2022/04/03 其他游戏