layer插件实现在弹出层中弹出一警告提示并关闭弹出层的方法


Posted in Javascript onSeptember 24, 2019

昨天layer插件弹出层关闭问题弄的我直挠头,短短几行代码,用了我将近2个钟头才解决。我的使用场景是这样。在页面中用layer.open弹出一个层,在层内是微信支付二维码,客户扫码支付。支付成功后关闭此弹出层,并提示项目投递成功,然后再跳转到其他页面。为了监控微信二维码扫码支付是否成功。我利用了每隔三秒,查询下支付订单,查看支付订单的支付状态是否改变。在实际操作中由于使用的是location.href做跳转,然而跳转执行的非常慢,要10几秒才能成功,这不能忍。只能退而求其次,只是提示投递成功,然后关闭弹出层。由于关闭弹出层,及弹出警告提示的相关代码是在弹出层所在页面执行。

实际代码在执行过程当中遇到了各种问题。

$(function () {
      setInterval(GetDeliverProjectPayStatusSuccess, 3000);
    });
    function GetDeliverProjectPayStatusSuccess() {
      $.post("/ajax/GetDeliverProjectPayStatus.ashx", { OrderNo:"<%=Request.QueryString["OrderNo"] %>" }, function (data) {
        console.info(data);
 
        if (data == 1) {
  parent.layer.closeAll();
          layer.alert("项目投递成功");
 
        }
      });
    }

首先尝试的代码如上。先关闭弹出层,然后提示项目投递成功。这尝试的结果是,弹出层被关闭了。却没有任何提示。为什么这样执行,分析的结果是关闭弹出层,意味着弹出页面被关闭。弹出页面被关闭了。在弹出页面存在的layer.alert代码也就无从执行。然后这两行代码调换位置。可仍然是弹出层被关闭了。却没有提示。这个分析的原因是就像javascript中的alert与location.href一样。如果先alert然后在location.href,也不会执行alert,或者说其实有执行,但是由于系统执行的非常快,还没等你看到alert信息,浏览器已经跳转了。这里也是,还没等你看到项目投递成功的信息,弹出层已经关闭了。

又尝试了带回调函数的layer.alert,等客户点击layer.alert的确定按钮后再执行parent.layer.closeAll() 来关闭弹出层。然而残酷的现实是,由于这个是每隔三秒执行一次post请求,结果就是如果你点击关闭按钮过慢,它会每隔3秒弹出项目投递成功的提示。这怎么能用。难道你要求客户必须快速反应,点击关闭按钮?经过不断尝试,最终还是找到了一个方法解决了这个问题。

能够很好解决此问题的代码如下:

$(function () {
      setInterval(GetDeliverProjectPayStatusSuccess, 3000);
    });
    function GetDeliverProjectPayStatusSuccess() {
      $.post("/ajax/GetDeliverProjectPayStatus.ashx", { OrderNo:"<%=Request.QueryString["OrderNo"] %>" }, function (data) {
        console.info(data);
 
        if (data == 1) {
          parent.layer.alert("项目投递成功");
          var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
          parent.layer.close(index); //再执行关闭 
 
        }
      });
    }

以上这篇layer插件实现在弹出层中弹出一警告提示并关闭弹出层的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
由浅到深了解JavaScript类
Sep 08 Javascript
jQuery学习4 浏览器的事件模型
Feb 07 Javascript
鼠标事件延时切换插件
Mar 12 Javascript
javascript nextSibling 与 getNextElement(node) 使用介绍
Oct 13 Javascript
如何使Chrome控制台支持多行js模式——意外发现
Jun 13 Javascript
js获取鼠标点击的位置实现思路及代码
May 09 Javascript
jQuery实现点击图片翻页展示效果的方法
Feb 16 Javascript
js实现文本框支持加减运算的方法
Aug 19 Javascript
jQuery ajax实现省市县三级联动
Mar 07 Javascript
微信小程序之数据缓存的实例详解
Sep 29 Javascript
Bootstrap实现前端登录页面带验证码功能完整示例
Mar 26 Javascript
vue 项目引入echarts 添加点击事件操作
Sep 09 Javascript
解决layer.prompt无效的问题
Sep 24 #Javascript
layer.prompt使文本框为空的情况下也能点击确定的方法
Sep 24 #Javascript
layui-table获得当前行的上/下一行数据的例子
Sep 24 #Javascript
通过实例了解JS 连续赋值
Sep 24 #Javascript
layui--select使用以及下拉框实现键盘选择的例子
Sep 24 #Javascript
JS防抖和节流实例解析
Sep 24 #Javascript
vue.js实现图书管理功能
Sep 24 #Javascript
You might like
php网页后退不再出现过期
2007/03/08 PHP
通过php快速统计某个数据库中每张表的数据量
2012/09/04 PHP
php模板函数 正则实现代码
2012/10/15 PHP
php仿QQ验证码的实例分析
2013/07/01 PHP
php调用C代码的实现方法
2014/03/11 PHP
ThinkPHP行为扩展Behavior应用实例详解
2014/07/22 PHP
Laravel实现构造函数自动依赖注入的方法
2016/03/16 PHP
laravel5表单唯一验证的实例代码
2019/09/30 PHP
js异步加载的三种解决方案
2013/03/04 Javascript
js用正则表达式来验证表单(比较齐全的资源)
2013/11/17 Javascript
showModalDialog模态对话框的使用详解以及浏览器兼容
2014/01/11 Javascript
Javascript单元测试框架QUnitjs详细介绍
2014/05/08 Javascript
javascript事件模型实例分析
2015/01/30 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
2015/03/02 Javascript
vue使用vue-cli快速创建工程
2017/07/28 Javascript
vue自定义指令directive实例详解
2018/01/17 Javascript
Vue中多个元素、组件的过渡及列表过渡的方法示例
2019/02/13 Javascript
node事件循环和process模块实例分析
2020/02/14 Javascript
纯JS开发baguetteBox.js响应式画廊插件
2020/06/28 Javascript
Vue作用域插槽实现方法及作用详解
2020/07/08 Javascript
JavaScript中reduce()的5个基本用法示例
2020/07/19 Javascript
Python2.7简单连接与操作MySQL的方法
2016/04/27 Python
django 外键model的互相读取方法
2018/12/15 Python
Python字符串通过'+'和join函数拼接新字符串的性能测试比较
2019/03/05 Python
python实现12306登录并保存cookie的方法示例
2019/12/17 Python
Python如何在windows环境安装pip及rarfile
2020/06/15 Python
加拿大花店:1800Flowers.ca
2016/11/16 全球购物
ZWILLING双立人英国网上商店:德国刀具锅具厨具品牌
2018/05/15 全球购物
销售人员中英文自荐信
2013/09/22 职场文书
求职信范文英文版
2014/01/05 职场文书
保护环境的建议书
2014/03/12 职场文书
运动会方阵口号
2014/06/07 职场文书
国际会计专业求职信
2014/08/04 职场文书
仲裁协议书
2014/09/26 职场文书
2014年终个人总结报告
2015/03/09 职场文书
困难补助申请报告
2015/05/19 职场文书