![](/img/trans.png)
[英]Problem in passing value from child window to parent window in Javascript
[英]Javascript passing data from child window to parent window, IE bug?
我有一個彈出窗口,將數據提供給其父級。 使用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看起來不會讓你在彈出窗口關閉后使用它們。 :-(
我最終做到的方式是通過json編碼我希望傳遞給彈出窗口中的父對象的復雜對象。 傳回的數據是一個簡單的字符串,可以毫無問題地復制。 在父端,json編碼的字符串被評估為Javascript對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.