关闭XMLHttpRequest处理程序中现有的已打开窗口

时间:2011-08-25 17:39:21

标签: javascript asp.net ajax xmlhttprequest

目前我正在使用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 :(得分:0)

如果您打算重新使用窗口,为什么不给它命名。

如果您给出与window.open,的第二个参数相同的名称,它将重新使用该窗口。

答案 1 :(得分:0)

这个怎么样?如果窗口仍处于打开状态,请更改URL。否则,打开窗口并加载URL。

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

        newWin.focus();
}