使用 window.opener 检查父级 window 在 IE 中不工作

Check for parent window using window.opener not working in IE

我有一个类似于此的客户端 Javascript 函数:

function LoadParent() {
   var objParent = window.opener;
   if (objParent) {
      objParent.location.reload();
   }
   self.close();
}

现在,这是我的场景:此代码位于我将调用 CHILD.aspx 的页面中。此页面在新的 window 中打开,我称之为 PARENT.aspx。

这是我的问题:这需要 运行 即使 PARENT.aspx 已关闭(换句话说,CHILD.aspx 是孤立的)。在这种情况下,它会跳过 IF 语句(因为它没有找到 PARENT.aspx)并且只关闭 window.

它适用于所有浏览器。 . .除了互联网爆炸。我正在 IE10 中测试。

我添加了一个警报(objParent);在 var objParent 声明之后查看发生了什么。我发现当这种情况出现在 Firefox 中时,它返回 NULL(如预期的那样)。但是当我在 IE 中 运行 它时,它返回了一个对象(NOT 预期)。所以它直接通过 IF 停止标志并尝试重新加载父级——当然,由于父级不再存在,它会爆炸。

有人有什么想法吗?这是一个让我非常沮丧的问题。

注意:打开 CHILD.aspx 作为模式不是一个选项。即使在 CHILD.aspx 打开后,PARENT.aspx 也需要可访问。

这是我最终完成的事情:

function LoadParent() {
   var objParent = window.opener;
   if (objParent) {
      if (!objParent.closed) { // this is to keep IE happy!!!
         objParent.location.reload();
      }
   }
   self.close();
}