为了账号安全,请及时绑定邮箱和手机立即绑定

iframe跨域问题

iframe跨域问题

德玛西亚99 2019-03-12 18:13:27
利用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上说的是可以传对象的,却报这样的错
查看完整描述

5 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

第一,window对象是不能被覆盖的

第二, 对象肯定传不过去的,更何况window对象


查看完整回答
反对 回复 2019-03-15
?
不负相思意

TA贡献1777条经验 获得超10个赞

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


查看完整回答
反对 回复 2019-03-15
?
哔哔one

TA贡献1854条经验 获得超8个赞

序列化一个对象,你可以用JSON.stringfy(obj),但是这里有一个问题,window对象结构复杂,你将会面临circular reference,所以,有个折中方案,就是你需要window的属性,将这些属性提取出来,拼装成一个新对象即可。

参考代码如下:


var data = JSON.stringify({

    'location': window.location

    // etc

});

stackoverflow


查看完整回答
反对 回复 2019-03-15
?
繁星coding

TA贡献1797条经验 获得超4个赞

window对象不能传递的,况且还跨域,安全问题很多啊
其实,你应该理一下你切实的需求,找找有没有其他的解决方案

查看完整回答
反对 回复 2019-03-15
  • 5 回答
  • 0 关注
  • 1771 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号