不确定您到底遇到了什么,但我已经成功地在开发和生产应用程序中的 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 看起来不会让您在弹出窗口关闭后使用它们。:-(