我有一個頁面,打開一個子窗口(有iframe),並從新的頁面,我打電話給家長函數將一些值從子窗口傳遞給父窗口。 子窗口代碼:JavaScript的跨域PostMessage不工作
window.opener.ParentFunction(sendvalues);
由於兩者在同一個域(example.com)它是爲我工作的罰款。 現在由於一些改變,我需要將我的子窗口移動到一個新域(new.example.com)。我也沒有獲得拒絕否認錯誤。
爲了解決這個問題,我使用PostMessage。
子窗口代碼:
window.parent.postMessage(sendvalues,"*");
父代碼:
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";
eventer(messageEvent, function (e) {
//for debug
alert(e.data);
ParentFunction(e.data);
}, false);
這不是爲我工作,我沒有得到任何價值。沒有錯誤,沒有任何事情發生。 代碼沒有得到執行eventer方法。我沒有得到任何警報。
任何幫助,非常感謝。
我剛剛看到你對postMessage的用法 - 你能否詳細說明... –
@Jaromanda X ..你在找什麼細節..好像是代碼eventer函數根本沒有被調用......我沒有收到任何警報,我補充說。 – SamM
@Jaromanda X:所以我需要從父窗口發送PostMessage到popwindow以及在我的情況下,它不是必需的,因爲我使用查詢字符串傳遞所有值,但是從Child我想要使用Postmessage傳遞值。可以使用「event.source.postMessage」 – SamM