0

从我的主应用程序页面 Default.aspx 我弹出另一个页面window.open。在那个页面上,我有一个HyperLink调用Javascript函数的主页链接。

<asp:HyperLink id="lnkHome" runat="server" meta:resourcekey="lnkHome" NavigateUrl = " " onclick = "javascript:performRedirect()">

我正在检查父窗口是否仍在运行以及是否只是关闭此窗口,如果没有则重定向回主窗口。

function performRedirect() {
    if (parentExists()) {

        $("a[id$= lnkHome]").attr('href', 'window.close();');
    }
    else {

        $("a[id$= lnkHome]").attr('href', 'Default.aspx');
    }
}
function parentExists() {

    return (window.parent.location === window.location) ? false : true;
}

它可以工作,但由于某种原因检查失败,Default.aspx即使调用页面仍然打开,它也总是将我重定向到。我需要在这里改变什么?不幸的是,我必须使用HyperLink控制。我正在使用 ASP.NET 4.0

4

1 回答 1

0

我会检查window.opener而不是window.parent因为你正在使用打开窗口window.open

你的parentExistis功能变成这样:

function parentExists() { 
    return window.opener!==null;
}

或者...

function parentExists() { 
    return window.opener!==null && window.opener.location.href===window.location.href;
}
于 2012-09-17T16:43:58.647 回答