закрыть существующее открытое окно внутри обработчика XMLHttpRequest - PullRequest
0 голосов
/ 25 августа 2011

В настоящее время я использую Javascript с Ajax для получения некоторых данных и представления их в новом окне. Я пытаюсь закрыть окно в OpenFileWindow () до открытия нового, но пока оно находит объект окна, все свойства и методы выдают ошибку отказа в разрешении.

Я полагаю, что это связано с областью видимости при вызове Ajax, так как при открытии окна перед XMLHttpRequest проблем не возникает.

Я не уверен, как поступить, и я немного искал. У кого-нибудь есть предложения? Спасибо.

Открыто

var newWin = null;
function View_onClick(propId, url) {
    var param = "propId=" + propId;
    param += "&filename=" + url;
    var xhr = new XMLHttpRequest();
    xhr.open("POST", "GetActivityFileName.ashx", false);
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4) {
            if (xhr.status == 200) {
                if (xhr.responseText == "") {
                    alert("Sorry unable to find file.");
                    return false;
                }
                else {
                    OpenFileWindow(xhr.responseText)
                    return false;
                }
            }
        }
    }
    xhr.send(param);
    return false;
}


function OpenFileWindow(fileUrl) {
        if(newWin != null)
            newWin.close();
        newWin = window.open(fileUrl);
        newWin.focus();
}

Ответы [ 2 ]

0 голосов
/ 25 августа 2011

Как насчет этого. Если окно все еще открыто, измените URL. В противном случае откройте окно и загрузите URL.

function OpenFileWindow(fileUrl) {
        if(newWin == null || newWin.closed) 
          newWin = window.open(fileUrl);
        else
          newWin.location.replace(fileUrl);

        newWin.focus();
}
0 голосов
/ 25 августа 2011

Если вы хотите просто повторно использовать окно, почему бы не назвать его.

Если вы дадите то же имя, что и второй параметр window.open,, оно снова будет использовать это окно.

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