利用postmessage跨域向子页面传父页面的window对象
代码:
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);
报错:
postMessage这个api,MDN上说的是可以传对象的,却报这样的错
文档看的不仔细呀……postMessage传送的这个message,是要能被The structured clone algorithm序列化的,你这直接把window怼进去了可不得报错么……
(手机发不了图,直接顺着原文找The structured clone algorithm点进去看看吧)
另外一个,有一个东西你得理解下,不管是BOM还是DOM,它们只是一套接口,面向被浏览器引擎渲染后的页面结构,就好像一扇门,装在墙上就能进屋,但拆下来运走就进不去这个屋了。