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 技巧
Apr 25 Javascript
网站页面自动跳转实现方法PHP、JSP(上)
Aug 01 Javascript
js原型链原理看图说明
Jul 07 Javascript
js 验证身份证信息有效性
Mar 28 Javascript
ExpressJS入门实例
Jan 14 Javascript
浅谈JS中json数据的处理
Jun 30 Javascript
vue.js开发环境搭建教程
May 04 Javascript
JS实现电商放大镜效果
Aug 24 Javascript
深入理解Vue官方文档梳理之全局API
Nov 22 Javascript
vue多次循环操作示例
Feb 08 Javascript
layui字体图标 loading图标静止不旋转的解决方法
Sep 23 Javascript
解决Vue的项目使用Element ui 走马灯无法实现的问题
Aug 03 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
apache php模块整合操作指南
2012/11/16 PHP
关于PHP的相似度计算函数:levenshtein的使用介绍
2013/04/15 PHP
注意:php5.4删除了session_unregister函数
2013/08/05 PHP
ThinkPHP实现批量删除数据的代码实例
2014/07/02 PHP
PHP 5.3新增魔术方法__invoke概述
2014/07/23 PHP
JS类中定义原型方法的两种实现的区别
2007/03/08 Javascript
javascript操作文本框readOnly
2007/05/15 Javascript
模仿JQuery sortable效果 代码有错但值得看看
2009/11/05 Javascript
JavaScript Event学习第八章 事件的顺序
2010/02/07 Javascript
关于JavaScript的with 语句的使用方法
2011/05/09 Javascript
angular简介和其特点介绍
2015/01/29 Javascript
JavaScript获取URL参数的方法之一
2017/03/24 Javascript
微信小程序 wx:for的使用实例详解
2017/04/27 Javascript
jQuery制作全屏宽度固定高度轮播图(实例讲解)
2017/07/08 jQuery
网页中的图片查看器viewjs使用方法
2017/07/11 Javascript
实例讲解DataTables固定表格宽度(设置横向滚动条)
2017/07/11 Javascript
微信小程序 如何引入外部字体库iconfont的图标
2018/01/31 Javascript
nodejs实现的简单web服务器功能示例
2018/03/15 NodeJs
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
[01:00:59]VP VS VG Supermajor小组赛胜者组第二轮 BO3第二场 6.2
2018/06/03 DOTA
Python极简代码实现杨辉三角示例代码
2016/11/15 Python
Python用UUID库生成唯一ID的方法示例
2016/12/15 Python
python机器学习理论与实战(六)支持向量机
2018/01/19 Python
python3+PyQt5+Qt Designer实现堆叠窗口部件
2018/04/20 Python
python topN 取最大的N个数或最小的N个数方法
2018/06/04 Python
python梯度下降法的简单示例
2018/08/31 Python
Python多图片合并PDF的方法
2019/01/03 Python
python 的numpy库中的mean()函数用法介绍
2020/03/03 Python
美国在线家具网站:GDFStudio
2021/03/13 全球购物
汇科协同Java笔试题
2012/03/31 面试题
毕业生毕业总结的自我评价范文
2013/11/02 职场文书
公安机关纪律作风整顿个人剖析材料材料
2014/10/10 职场文书
2015年秋季学校开学标语
2015/07/16 职场文书
高三毕业感言
2015/07/30 职场文书
详解nodejs内置模块
2021/05/06 NodeJs
Python 数据结构之十大经典排序算法一文通关
2021/10/16 Python