gpt4 book ai didi

javascript - 在 window.opener 中创建一个在子窗口关闭时持续存在的对象

转载 作者:行者123 更新时间:2023-11-28 09:34:32 25 4
gpt4 key购买 nike

在 window.opener 中访问和创建对象非常简单。

window.opener.myObj = new Object();
window.opener.myObj.name = 'Tom';
alert(window.opener.myObj.name); // alerts('Tom')

但是,当当前(子)窗口关闭时,对象 myObj 变得无效,因为该对象实际上驻留在当前窗口中,并且 window.opener 只保留对其的引用。

如何从子窗口中在 window.opener DOM 中创建一个对象,以便在子(当前)窗口关闭时该对象仍然存在?

最佳答案

However, when the current (child) window closes, the object myObj becomes invalid as the object actually resides in the current window and the window.opener only retains a reference to it.

你证明了吗? 我必须承认没有尝试过。don't see that result在 Chrome 或 Firefox 上。即使子窗口关闭,该对象也会保留在周围。 更新:奇怪的是,在 IE9 上,对象仍然存在,但属性却没有。

但假设这是真的,你可以尝试

window.opener.myObj = new window.opener.Object();

...但我并不真正抱有任何成功的希望。 更新:这不仅对 IE9 没有帮助,实际上还让情况变得更糟。

<小时/>

相反,我认为我必须提倡回调父窗口来要求它创建对象。

父窗口脚本:

function createFoo(spec) {
window.foo = jQuery.extend({}, spec);
display("Created <code>foo</code> as requested by child window");
}

jQuery(function($) {
var childid = "childwin" + new Date().getTime();

$("#openPopup").click(function() {
var wnd = window.open("http://jsbin.com/asocuy/1", childid);
});
$("#displayFoo").click(function() {
if (window.foo) {
display("<code>foo</code> exists");
display("<code>foo.name</code> = " + window.foo.name);
}
});
});

function display(msg) {
$("<p>").html(String(msg)).appendTo(document.body);
}

子窗口脚本:

jQuery(function($) {

if (window.opener) {
if (!window.opener.createFoo) {
display("<code>window.opener.createFoo</code> not found");
}
else {
window.opener.createFoo({
name: "Fred"
});
display("Asked parent window to create <code>foo</code> with name = 'Fred'");
}
}
else {
display("<code>window.opener</code> not found");
}

$("#btnClose").click(function() {
window.close();
});

function display(msg) {
$("<p>").html(String(msg)).appendTo(document.body);
}
});

Live Example | Source (甚至可以在 IE 中使用)

关于javascript - 在 window.opener 中创建一个在子窗口关闭时持续存在的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13275389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com