大家在使用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>
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.onunload与form.onsubmit两个事件来完成分辨,当提交一个form时,触发onsubmit事件,我们在这个事件处理方法中,将isSubmit置为true,在onunload事件中,根据isSubmit去分辨是提交页面还是页面离开,由于onunload事件总是在onsubmit事件之后执行,所以可以保证得到正确的结果。
在注释处我们可以添加自己想要的代码,例如使用ajax调用后台方法等等…..
/Files/zhb/WebApplication1.rar