gpt4 book ai didi

Javascript 将数据从子窗口传递到父窗口,IE 错误?

转载 作者:数据小太阳 更新时间:2023-10-29 04:39:30 26 4
gpt4 key购买 nike

我有一个弹出窗口,可以将数据返回给它的父窗口。使用 window.opener.document.data = data_from_popup;

这在 FF 中运行良好,但在 IE (6/7) 中,可以在弹出窗口仍显示时访问数据。当我关闭弹出窗口时,数据似乎被垃圾收集了。

我尝试对从弹出窗口接收到的数据使用 clone() 函数:

window.opener.add_data(data_from_popup);

在父级中:

function add_data(data_from_popup) {
data = clone(data_from_popup);
}

它有点管用,但在某些情况下,clone() 函数似乎会无限递归。

您是否遇到过同样的事情,有没有不使用克隆功能的方法来防止这种情况发生?

最佳答案

不确定您到底遇到了什么,但我已经成功地在开发和生产应用程序的 IE(6、7 和 8)中定期将子弹出窗口的数据存储在开启器上。

您是否有可以提供的 URL 或更多源代码?

在相关说明中...您不是在尝试确定开启器上对象的类型...您是从弹出窗口中确定的吗? - 此区域中存在一些已知的 IE 错误。

更新:

这是一个简单的例子...

<!--main window-->
<script>
function getThing(id){
url = 'http://mysite.com/...whatever...';
features = 'locationbar=X,menubar=Y...';
window['popup4'+id] = open(url, 'someNameWithoutSpaces', features);
}
function popupCallback(data){
alert('I got data back! ' + data);
document.getElementById('someID').innerHTML = '<b>' + data.label + ' (' + data.id + ')</b>';
//close the popup (now that we have/are done with the data)
window['popup4someID'].close();
}
</script>
<div id="someID">{Nothing Selected Yet}</div>
<input type="button" value="Pick One" onclick="getThing('someID');"/>

<!--popup window-->
<script>
function saveSelection(){
//acquire data however you want/need
var selData = {};
selData.id = 123456;
selData.label = 'iPod Touch (Jeff Atwood Edition)';
//call callback on opener
window.opener.popupCallback(selData);
}
</script>

更新 2

在测试中,似乎在 IE7、IE8(但不是 IE6)中弹出窗口关闭后,所有引用数据都丢失了(引用不捕获快照)因此,如果您在弹出窗口关闭后需要数据,则需要克隆它。

我想如果数据可以包裹在一个数组中,克隆是小菜一碟。只需在其上调用 .slice() 即可复制它,但是......这也不起作用!

我想您需要保存所需的值(用于形成元素或 DOM),因为 IE 看​​起来不会让您在弹出窗口关闭后使用它们。 :-(

关于Javascript 将数据从子窗口传递到父窗口,IE 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/784122/

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