大家在使用Asp.net開發應用系統時,有時會存在這樣的場景,當頁面離開時需要清空Session等等一系列的後序操作。
如果大家使用後台代碼清空Session,那麼當頁面離開時是不會Postback頁面的,問題就出在這裡,那麼我們只能從前台入手了,可以使用前台事件window.onunload,沒有問題,我們繼續,當我們正常的載入Asp.Net頁面,點擊一個Button,頁面PostBack之前每次都會觸發onunload事件,那麼我們如何才能在前台利用onunload事件分析出在什麼情況下是postback,什麼情況下是離開呢?
var isSubmit = false; $(document).ready(function () { document.forms[0].onsubmit = SubmitFun; window.onunload = CheckAction; }); function SubmitFun() { isSubmit = true; } function CheckAction() { if (!isSubmit) { var guid = $('#<%=hfGuid.ClientID %>').val(); // ajax 執行刪除某一系列 Session 的動作 // $.get('<%=ResolveClientUrl("...")%>', function () { }); alert("is leave"); //to do //for example use the ajax invoke service method to clean session } else { alert("is submit"); //to do } }
我們結合使用window.onunload與form.onsubmit兩個事件來完成分辨,當提交一個form時,觸發onsubmit事件,我們在這個事件處理方法中,將isSubmit置為true,在onunload事件中,根據isSubmit去分辨是提交頁面還是頁面離開,由於onunload事件總是在onsubmit事件之後執行,所以可以保證得到正確的結果。
在註釋處我們可以添加自己想要的代碼,例如使用ajax調用後台方法等等...
引用:Web系统中关于Postback与页面离开的分辨
沒有留言 :
張貼留言