iframe跨域问题

利用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);

报错:


https://img.mukewang.com/5c8b5bf800018f1906390053.jpg


postMessage这个api,MDN上说的是可以传对象的,却报这样的错


德玛西亚99
浏览 1772回答 5
5回答

精慕HU

第一,window对象是不能被覆盖的第二, 对象肯定传不过去的,更何况window对象

不负相思意

直接传window对象不行 换成普通对象还是可以的

哔哔one

序列化一个对象,你可以用JSON.stringfy(obj),但是这里有一个问题,window对象结构复杂,你将会面临circular reference,所以,有个折中方案,就是你需要window的属性,将这些属性提取出来,拼装成一个新对象即可。参考代码如下:var data = JSON.stringify({    'location': window.location    // etc});stackoverflow

繁星coding

window对象不能传递的,况且还跨域,安全问题很多啊其实,你应该理一下你切实的需求,找找有没有其他的解决方案
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript