iframe传值踩坑

跨域

Posted by Jorce on November 7, 2018

Update: iframe父子传值的问题


公司需求做一个左右分栏的页面,因为项目比较大,所以左侧页面需要用iframe链接另外一个服务器的地址,因而本次记录一下使用过程中的问题

跨域

  两个项目是挂在两个服务器上的,所以父子组件不能用dom直接拿,

  所以使用以下的两个方法

子页面
1
2
3
4
5
6
7
8
9
  function receiveMessage(event) {

      event.source.postMessage("成功获取直播资源",

      event.origin);

  }

window.addEventListener("message", receiveMessage, false);
父页面
1
2
3
4
5
6
7
8
9
  var iframe = document.querySelector('#id').contentWindow

  iframe.postMessage(msg, url)

  window.addEventListener("message", function (obj) {

  console.log(999, obj)

  }, false);

2.局部刷新

有需求是需要只让iframe刷新获得数据,而父页面不刷新

1.同域

document.getElementById(‘id’).contentWindow.location.reload(true);

2.跨域

这块的话如果src不变,我推荐的方法是用postmessage来传数据。

注:很多博主疯狂转载的document.frames已经没了。