關閉頁面時window.location事件未執行的原因分析及解決方案,window.location
1、問題描述:
JS中定義widow.location = 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,問題得到解決。
js中windowlocation不執行什原因?
1——
判斷是否你的系統是否禁止了JS的運行
2——
檢查這個代碼是否有執行的可能
3——
檢查這代碼之前是否有錯誤。 答案補充 給你個檢查的方案:
把 window.location = '...' 修改為3行: 答案補充 按快了,鬱悶。
修改為:
alert("before window.location set");
window.location='...';
alert("after window.location set");
這個是我通常檢測javascript的方法,如果第一個alert沒有調用,那麼你把它一直往前移動,直到第一個調用為止,然後確定錯誤並修正。
此外,如果你給window.location設定的值是當前頁面的地址,這個改變是無效的(因為只有location改變才會執行,而你設定的值沒有改變,所以不會執行)。
如果要對當前頁面重新整理,好象location有個refresh函數 或者類似的(具體的函數或所在對象忘記了)。 答案補充 檢查你的 location 拼字
使用:
alert(window.location)
顯示的資訊應該是當前的url地址。
js中windowlocation不執行什原因?
那你試一下:
window.location.herf="";
試一下能否執行,再不然直接用Navgate導航到某個頁面上去!