window.onbeforeunload и перенаправить на корневой путь - PullRequest
0 голосов
/ 13 июля 2011

Я нашел некоторый код javascript / activex в проекте, который вызывается при выходе со страницы (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 Ответ

1 голос
/ 13 июля 2011

Сценарий напрямую не объявляет перенаправление - он просто обрабатывает ответ от вызова AJAX на logout.jsp?js=1, оценивая его как функцию - я думаю, что вам нужно изменить этот текст ответа (так что внескрипт, который вы опубликовали), чтобы перенаправить его в нужное место.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...