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