我有一个类似于以下的客户端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();
}