2017-11-11 55 views
-2

我想聽從點擊/提交事件從彈出窗口到父頁面。 下面的代碼在父窗口和彈出窗口屬於同一個域的情況下工作,如http://localhost(在代碼中查看下面的註釋行),但如果彈出窗口具有不同的域名稱echosign.com,它將不會調用eventHandler方法。 在下面的代碼中父窗口是localhost或彈出窗口以外的任何東西。如何傾聽從彈出窗口提交事件到父頁面 - 跨域

var newWindow; 
function OpenPopup() { 
    //newWindow = window.open("http://localhost:21930/Popup.htm", "PopupWindow", "width=300,height=100"); 
    newWindow = window.open("https://secure.echosign.com", "PopupWindow", "width=300,height=100"); 
    if (newWindow.addEventListener) { 
     newWindow.addEventListener('click', eventHandler, false); 
    } else {   
     newWindow.attachEvent('onclick', eventHandler); 
    } 
} 

function eventHandler(e) { 
    if (e.currentTarget.origin == "https://secure.echosign.com") { 
     console.log("Event from Adobe Sign!", JSON.parse(e.data));   
    } else { 
     console.log(e.currentTarget.origin);   
    } 
} 
+0

嘗試這樣的回答:https://stackoverflow.com/questions/3457391/how-do-you-use-window-postmessage-across-domains – Maarten

+0

Maarten-你的建議的URL不利於我 – ADP

+0

也就是說部分*「同源poilicy」*安全限制 – charlietfl

回答

0

如果您對兩個域都有控制權,您可以將標頭設置爲接受其他域。

Access-Control-Allow-Origin: http://localhost 
+0

感謝您的回覆:我對彈出窗口域沒有任何控制權。但作爲安全方面,我們允許這個域名加入我們的項目。 – ADP

相關問題