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

 

posted @ 2010-07-22 19:15  B.Zhou  阅读(1971)  评论(8编辑  收藏  举报