在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ iframe跨域問題

iframe跨域問題

利用postmessage跨域向子頁面?zhèn)鞲疙撁娴膚indow對象

代碼:

1.父頁面

    window_parent = this.window;
    var ifr = document.getElementsByClassName('video_iframe');
    ifr.contentWindow.postMessage(window_parent,target);

2.iframe頁面

window.addEventListener('message',function(event){
   if(event.origin == 'https://xxx.com'){
         this.window = event.data;
    }
},false);

報錯:

clipboard.png

postMessage這個api,MDN上說的是可以傳對象的,卻報這樣的錯

回答
編輯回答
負(fù)我心

序列化一個對象,你可以用JSON.stringfy(obj),但是這里有一個問題,window對象結(jié)構(gòu)復(fù)雜,你將會面臨circular reference,所以,有個折中方案,就是你需要window的屬性,將這些屬性提取出來,拼裝成一個新對象即可。
參考代碼如下:

var data = JSON.stringify({
    'location': window.location
    // etc
});

stackoverflow

2017年5月9日 20:05
編輯回答
離夢

文檔看的不仔細(xì)呀……postMessage傳送的這個message,是要能被The structured clone algorithm序列化的,你這直接把window懟進去了可不得報錯么……
(手機發(fā)不了圖,直接順著原文找The structured clone algorithm點進去看看吧)

另外一個,有一個東西你得理解下,不管是BOM還是DOM,它們只是一套接口,面向被瀏覽器引擎渲染后的頁面結(jié)構(gòu),就好像一扇門,裝在墻上就能進屋,但拆下來運走就進不去這個屋了。

2017年4月21日 23:19
編輯回答
舊螢火

直接傳window對象不行 換成普通對象還是可以的

2017年8月19日 10:17
編輯回答
冷溫柔

第一,window對象是不能被覆蓋的

第二, 對象肯定傳不過去的,更何況window對象

2018年3月8日 06:47
編輯回答
落殤

謝邀
window對象不能傳遞的,況且還跨域,安全問題很多啊
其實,你應(yīng)該理一下你切實的需求,找找有沒有其他的解決方案

2018年7月9日 06:00