關閉頁面,window.onunload事件未執行的原因


 

1、問題描述:

  JS中定義widow.onunload= function(),頁面關閉時,logout()函數未執行。 

window.onunload = function() {
        logout();
    }

function logout(reqParam, callback){
        var userManageServiceUrl = "http://" + getServerAddr() + "/axis2/services/UserManageService";
        var urlList = [];
        var url = window.location.href;
        urlList = url.split("?");
        var sessionID = urlList[1];
        reqParam.sessionID = sessionID;
        var pl = new SOAPClientParameters();
        var reqParamStr = JSON.stringify(reqParam);
        pl.add("reqParam", reqParamStr);
        SOAPClient.invoke(userManageServiceUrl, "logout", pl, false, callback);
    }

 

2、問題原因:

  logout()中調用SOAPClient.invoke()方法,參數為true,代表前端和server是異步方式通信,即前端還未接收到server端的響應,便已經執行后面的語句了,在該問題中表現為前端執行logout()時還未等到server的響應,便已經將頁面關閉了,所以表現為logout()未執行。

3、解決方法:

  將前端和server通信方式改為同步,即將SOAPClient.invoke()方法中true改為false,問題得到解決。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM