zoukankan      html  css  js  c++  java
  • EasyUI Messager 消息框点击右上角x无法执行回掉函数解决

      我先声明下,我是改动源码,网上的其他方法我试过了,不行。我是写java后台的,前端也是小白,可能讲的也也不是很清楚。

      首先我想到的是在网上找到解决方法,我找到一个方法说在jquery.easyui.min.js里面加入一段代码,我试过了,不行。

    根据这个思路,更改easyui源码,我们来看源博主是怎么改的。

    我用的是easyui1.3.2,跟原博主的版本也是不一样的,easyui源码里面获取window的方法名也不叫_211,然后ctrl+h搜索var win,在jquery.easyui.min.js里面找到了var win=_237(_238, _239, _23a);这个方法,我猜测,应该是跟源博主说的一样,版本不一样,方法名有所改变。然后我找到_237这个方法,发现他返回的是一个window。再去看openAlert()这个方法,从源头上面调用是调用$.messager这个对象的一个属性,属性为alert,是一个方法,看下图

    先看上面红色框,defaults.ok,然后执行传入的fn回掉函数,然后我结合实际情况,猜测这个就是Messager 窗口点击确认执行的方法。由此可见,点击Messager 窗口确定的时候,会执行你传入的fuction,也就是openAlert()的第四个参数。如果不信,可以在里面加入console.log()试验一下,具体是不是这样,我没有试过,重点并不在这里。在看下面的红色框内。这里调用了_237这个方法获取了一个window,然后我到_237这个方法里面去看。

     

     我们可以看到,_237里面声明了一个window,对这个window进行了一系列操作,别的不看,看箭头指向这个位置。onClose不就是关闭按钮吗,点击关闭按钮执行的函数,函数里面只是做了个延迟0.01秒关闭页面的操作,入口找到了。当时的内心还是很鸡动的,啊呸,激动,哈哈。到这里,我们知道$.messager.alert是一个函数,里面调用了_237这个函数。你调用openAlert()的时候就是在调用$.messager.alert的函数,而$.messager.alert又调用了_237这个方法。这个时候,我们只需要给_237这个方法加入一个参数fn。如下图:

    这样就把你传入的回掉函数在Messager窗口点击右上角x的时候执行了。在alert这个函数里面,调用_237这个方法的时候加上fn这个参数就行。当然,_237这个函数是共用的,所以,其他方式打开的窗口调用_237的时候,也需要加入fn这个参数:

     

    这个时候就完成了对源码的修改,个人亲测,没有问题。如果是版本和我不一样,找找这个方法应该就能找到,这个方法很显眼。当然,源码改完只够都需要去测试一把,哈哈。希望能帮助被这个问题所困扰的同学。我一个月更新一片博客,和大家共同成长,一个工作11个月的彩笔的随笔

  • 相关阅读:
    springmvc文件下载
    srringmvc中Controller向前端传值
    springmvc文件上传
    springmvc数据绑定流程
    ssm框架restful风格实现增删改查
    ssm框架搭建
    springmvc直接转发
    @RequestParams注解
    个人博客写了两年
    JS使用OSS上传文件遇到的一些问题
  • 原文地址:https://www.cnblogs.com/ghsy/p/7279769.html
Copyright © 2011-2022 走看看