『葉狂人』的怕失憶筆記 Front-End

不同的網域名稱,iframe 與 parent window 的通訊

今天遇到了一個問題

如果 iframe 使用的是不同的網域名稱,在傳輸資料上面可以使用 postMessage 的方法做通訊

if (window.addEventListener) {
    window.addEventListener ("message", receive, false);        
}
else {
    if (window.attachEvent) {
        window.attachEvent("onmessage",receive, false);
    }
}

function receive(event){
    var data = event.data;
    if(typeof(window[data.func]) == "function"){
        window[data.func].call(null, data.params[0]);
    }
}

function alertMyMessage(msg){
    alert(msg);
}

然後以下是 iframe

function send(){
    window.parent.window.postMessage(
        {'func':'alertMyMessage','params':['Thanks for Helping me']},
        'http://www.my-website.com'
    );
}

參考資料 Window.postMessage

How to Call Parent Window JavaScript Function inside iframe

『葉狂人』的怕失憶筆記, author
「重要的不是個人出身,而是成長歷程。」
《哈利波特》系列小說