使用window.opener在IE中的JavaScript问题

时间:2011-10-04 12:56:10

标签: javascript internet-explorer

我正在尝试使用以下JavaScript检查弹出页面是否仍处于打开状态。

父页面(打开弹出窗口的调用页面)已打开,但此代码仍然失败。我从一个aspx弹出页面调用它,该页面在另一个母版页中有一个母版页。因此,最终调用此脚本的单击事件是内容占位符中Gridview中的编辑链接,该内容位于最上面的主页面内容占位符中,不确定它是否与它有任何关系。该脚本将触发,但它不会将父页面视为打开而未关闭。

if (window.opener != null && !window.opener.closed) { 
    alert(window.opener); 
    var val = window.opener.parentFunc(a); 
    alert(a); 
} 

这是IE唯一的问题,Firefox可以识别window.opener页面。尝试IE的多个版本都有问题,但Firefox和Opera工作。

我实际上使用了这个警告声明......

alert(window.opener);

在IE中返回Undefined。

在Firefox中返回了ObjectWindow。

3 个答案:

答案 0 :(得分:0)

我认为这是IE中的安全限制。看看这个帖子,看看它是否能解决你的问题:

http://social.msdn.microsoft.com/Forums/en/iewebdevelopment/thread/0c014e78-8d35-4df3-93da-7f6a30b4ed8b

答案 1 :(得分:0)

我通过从VB.net发送脚本来实现这一点....

Dim BrowserSettings As String = "status=no,toolbar=no, scrollbars =yes,menubar=no,location=no,resizable=no," & "titlebar=no, addressbar=no, width=650 ,height=800"
Dim URL As String = "testNewPage.aspx"
Dim scriptText1 As String = ("<script>javascript: var w = window.open('" & URL & "','_blank','" & BrowserSettings & "'); </script>")
ScriptManager.RegisterStartupScript(Me, GetType(Page), "ClientScript1", scriptText1, False)here

这不是我想要的,但它似乎正在工作,除了现在弹出页面不在顶部。需要弄清楚那部分。

我一直在尝试应用焦点,似乎没有用。 另外,尝试了一个modaless弹出窗口,但是我失去了对打开窗口的引用。

答案 2 :(得分:0)

function getParentWindow(){
    var father = window.opener;
    if(father == undefined) {
       father=window.dialogArguments
    }

    return father;  
}