• Web系统中关于Postback与页面离开的分辨


        大家在使用Asp.net开发应用系统时,有时会存在这样的场景,当页面离开时需要清空Session等等一系列的后序操作。

        如果大家使用后台代码清空Session,那么当页面离开时是不会Postback页面的,问题就出在这里,那么我们只能从前台入手了,可以使用前台事件window.onunload,没有问题,我们继续,当我们正常的载入Asp.Net页面,点击一个Button,页面PostBack之前每次都会触发onunload事件,那么我们如何才能在前台利用onunload事件分析出在什么情况下是postback,什么情况下是离开呢?

    上代码

     1 <script type="text/javascript">
     2     var isSubmit = false;
     3     $(document).ready(function () {
     4         document.forms[0].onsubmit = SubmitFun;
     5         window.onunload = CheckAction;
     6     });
     7 
     8     function SubmitFun()
     9     {
    10         isSubmit = true;
    11     }
    12 
    13     function CheckAction() {
    14         if (!isSubmit) {
    15             alert("is leave");
    16             //to do 
    17             //for example use the ajax invoke service method to clean session 
    18         }
    19         else {
    20             alert("is submit");
    21             //to do
    22         }
    23     }
    24 </script>

        我们结合使用window.onunloadform.onsubmit两个事件来完成分辨,当提交一个form时,触发onsubmit事件,我们在这个事件处理方法中,将isSubmit置为true,在onunload事件中,根据isSubmit去分辨是提交页面还是页面离开,由于onunload事件总是在onsubmit事件之后执行,所以可以保证得到正确的结果。

        在注释处我们可以添加自己想要的代码,例如使用ajax调用后台方法等等…..

    /Files/zhb/WebApplication1.rar

  • 相关阅读:
    LeetCode 791. 自定义字符串排序
    LeetCode 725. 分隔链表
    LeetCode 445. 两数相加 II
    LeetCode 354. 俄罗斯套娃信封问题
    LeetCode 338. 比特位计数
    LeetCode 318. 最大单词长度乘积
    LeetCode 300. 最长上升子序列
    蚂蚁金服研发面经
    Consul etcd ZooKeeper euerka 对比
    Java并发机制的底层实现原理之volatile应用,初学者误看!
  • 原文地址:https://www.cnblogs.com/zhb/p/1783250.html
Copyright © 2020-2023  润新知