2013-04-15 41 views
0

進出口使用此代碼來演示在同一領域的概念信息發送到家長:時彈出關閉,跨域

家長:

<html> 
    <body> 
<form> 
    <input id="details" name="details"> 
    <input type="button" name="choice" onClick="window.open('http://domainB.com/popuppage.html','popuppage','width=850,toolbar=1,resizable=1,scrollbars=yes,height=700,top=100,left=100');" value="Open popup"> 
</form> 
</body> 
</html> 

而彈出的文件:

<html> 
<head> 
</head> 
<body> 
<SCRIPT LANGUAGE="JavaScript"> 
<!-- Begin 
function sendValue (s){ 
var selvalue = s.value; 
window.opener.document.getElementById('details').value = selvalue; 
window.close(); 
} 
// End --> 
</script> 
<form name="selectform"> 
<input name="details" value=""> 
<input type=button value="Copy input to parent opener" onClick="sendValue(this.form.details);"> 
</form> 
</body> 
</html> 

這很好用,但由於彈出式窗口對父頁面window.opener.document.getElementById('details').value = selvalue;的內容進行了修改,出於安全原因,這不適用於跨域示例。我不想修改父母上的內容,我只是想傳遞一個值給父母的腳本,所以我需要一個父母的監聽腳本來參加從關閉彈出窗口發送的信息。這可能嗎?備擇方案?

+0

爲什麼你在其他領域的選擇?你不能在同一個域上製作相同的頁面嗎? – Joseph

+0

我不能,它必須跨域 – DomingoSL

+1

這可能是一個選擇:https://developer.mozilla.org/en-US/docs/DOM/window.postMessage – Passerby

回答

1

正如Passerby所建議的,postMessage(https://developer.mozilla.org/en-US/docs/DOM/window.postMessage)是您想要做的理想解決方案。因爲它在舊版瀏覽器上無法使用,所以您必須將自己的內容限制在較新的瀏覽器中,或者使用iframe等進行跨平臺通信。

您可以在彈出窗口中運行easyXDM,並在iframe中加載domainA.com,然後從該iframe中,您應該能夠訪問和操作domainA.com上啓動彈出窗口的其他頁面。