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

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


现在,这是我的情况:此代码位于我称为CHILD.aspx的页面中。此页面从我称为PARENT.aspx的新窗口中打开。

这是我的问题:即使PARENT.aspx已关闭(换句话说,CHILD.aspx是孤立的),它也需要运行。在这种情况下,它跳过了IF语句(因为它找不到PARENT.aspx),而是关闭了窗口。

它适用于所有浏览器。 。 。除Internet Explorer。我正在IE10中测试。

我添加了一个Alert(objParent); var objParent声明后的一行以查看发生了什么。我发现在Firefox中出现这种情况时,它返回NULL(如预期)。但是当我在IE中运行它时,它返回了一个对象(不是预期的)。因此,它会通过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();
}

09-25 19:11