0
我確實發現在一個項目中一些JavaScript/ActiveX代碼,留下一個頁面(window.onbeforeunload)時稱爲:window.onbeforeunload並重定向到根路徑
我的項目是在到達該地址
www.someaddress.itdoesntexists/MyProjectName/page.jsp
當註銷功能被調用時,在頁logout.jsp的動作正確地進行,但在該過程結束時,用戶被重定向到
www.someaddress.itdoesntexists
代替
ww.someaddress.itdoesntexists/MyProjectName/
代碼:
<script type="text/javascript">
var loggedout = false;
bVer = parseInt(navigator.appVersion);
bName = navigator.appName;
browserIE = bName == "Microsoft Internet Explorer";
browserNS = bName == "Netscape";
function sendHttpRequestSubmit (http_request, parameters) {
http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http_request.setRequestHeader("Content-length", parameters.length);
http_request.setRequestHeader("Connection", "close");
http_request.send(parameters);
}
function httpRequest(url, mime, callback, async, parameters) {
var http_request = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) http_request.overrideMimeType(mime);
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert('Unable to create a XMLHTTP instance');
return false;
}
http_request.onreadystatechange = function() {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
if (callback != null) callback(http_request);
} else alert('There is a problem with the request "' + url + '"');
}
}
async = async == null ? true : async;
http_request.open('POST', url, async);
if (parameters != null) sendHttpRequestSubmit(http_request, parameters);
else http_request.send(null);
if (browserNS && !async) {//
if (callback != null) callback(http_request);
}
}
function logout() {
var sg;
if (!loggedout)
httpRequest ("logout.jsp?js=1", "text/javascript", function (http_request) {
sg = eval(http_request.responseText);
}, false);
loggedout = true;
return sg;
}
window.onbeforeunload = logout;
有人能向我解釋這裏告訴腳本,它並沒有去根路徑?
奇怪的行爲是,如果我從按鈕/鏈接調用相同的logout()函數,它會在執行註銷過程後將用戶帶到預期路徑(ww.someaddress.itdoesntexists/MyProjectName /)。 – GAS
@GAS你如何調用函數來產生意想不到的行爲? –
那麼,它發生在你重新加載頁面(F5)時。它詢問您是否要離開頁面,如果是,則將用戶重定向到根路徑。 – GAS