2011-07-13 82 views
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; 

有人能向我解釋這裏告訴腳本,它並沒有去根路徑?

回答

1

該腳本不直接聲明重定向 - 它只是通過將其評估爲函數來處理來自AJAX調用的響應logout.jsp?js=1 - 我猜你需要修改該響應文本(因此,您發佈的腳本)以將其重定向到您想要的位置。

+0

奇怪的行爲是,如果我從按鈕/鏈接調用相同的logout()函數,它會在執行註銷過程後將用戶帶到預期路徑(ww.someaddress.itdoesntexists/MyProjectName /)。 – GAS

+0

@GAS你如何調用函數來產生意想不到的行爲? –

+0

那麼,它發生在你重新加載頁面(F5)時。它詢問您是否要離開頁面,如果是,則將用戶重定向到根路徑。 – GAS