iframe 跨域页面之间传值

1 篇文章 0 订阅

一 . 父页面向子页面传值
通过H5的postMessage方法传值
首先,在父页面A中建立一个iframe,其中src要写好子页面B的地址,然后在A页面中写如下方法:

<iframe [src]="iframeSrc" id="overviewView" width="100%" height="100%" frameborder="0"></iframe>

var iframeSrc= "https://www.baidu.com";
var iframe: any = document.querySelector('#overviewView');

 iframe.contentWindow.postMessage(msg,childDomain);
 
 //iframe.contentWindow.postMessage({ type: 'iframeScroll', scrollTop: 850 }, '*');

childDomain与A的iframe的src地址不一样,childDomain是域,而src是域中的一个页面
msg是传输的信息,可以是字符串,也可以是对象。
上面的方法一定要写在一个函数中,并通过点击事件调用,如果希望iframe开始为空,点击后在设置src,
可以在设置src之后,通过setTimeout设置一定时间后在传输信息。

在子页面B中,通过对window添加事件获取传输过来的信息:

    window.addEventListener('message', function (e) {
        console.log(e);
        if (e.data && e.data.type === 'iframeOnScroll') {
         console.log(e.data.scrollTop);
        }
       }//,false
       );

二.子页面传值给父页面

子页面

<body> 
    子级:B页面<br/>
    <button id="b_button">B页面发送A页面数据</button><br/> 
    <script> 
    document.getElementById("b_button").onclick = function(){ 
        var param = {'name':'admin'};
        window.parent.postMessage(param,'*');
    } 
    </script>
</body>

父页面

<body> 
    父级:A页面<br/><br/>
    <iframe src="http://www.genetek.cc/iframe/b.html" width="500px" height="200px" id="iframe"></iframe> 
    <script> 
        window.addEventListener('message', function(e) {
            alert(JSON.stringify(e.data));
            console.log('获取子级B页面返回值:');
            console.log(e.data);
        })

    </script> 
</body> 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值