【JavaScript】------ JavaScript 实现传递消息数据到iframe页面并互相传递

如果是使用iframe,代码应该这样写:

阿里云米店:https://mi.aliyun.com/shop/36078 

    <div  style="height: 200px; width:300px;"><iframe src="http://localhost:8080/chenzhenhua/lister.html" id="myIFrame"></iframe></div>

 

    //弹出一个新窗口
        var domain = 'http://localhost:8080';
        var iframe = document.getElementById('myIFrame').contentWindow;
           
        //发送消息
        setInterval(function(){
            var message = 'Hello!  The time is: ' + (new Date().getTime());
           // console.log('blog.local:  sending message:  ' + message);
                //send the message and target URI
            iframe.postMessage(message,domain); 
        },6000);
        //响应事件
        window.addEventListener('message',function(event) {
          //  if(event.origin !== 'http://davidwalsh.name') return;
            console.log('index:  ' + event.data);
           // event.source.postMessage('holla back youngin!',event.origin);
        },false);

确保你使用的是iframe的contentWindow属性,而不是节点对象。

数据接收端

下面我们要开发的是数据接收端的页面。接收方窗口里有一个事件监听器,监听“message”事件,一样,你也需要验证消息来源方的地址。消息可以来自任何地址,要确保处理的消息是来自一个可信的地址。

    //响应事件
window.addEventListener('message',function(event) {
  //  console.log(event);
	//if(event.origin !== 'http://localhost:8080') return;
	console.log('message lister:  ' + event.data,event);
	event.source.postMessage('holla back youngin!',event.origin);
},false);

上面的代码片段是往消息源反馈信息,确认消息已经收到。下面是几个比较重要的事件属性:

  • source – 消息源,消息的发送窗口/iframe。
  • origin – 消息源的URI(可能包含协议、域名和端口),用来验证数据源。
  • data – 发送方发送给接收方的数据。

这三个属性是消息传输中必须用到的数据。

使用window.postMessage

跟其他很web技术一样,如果你不校验数据源的合法性,那使用这种技术将会变得很危险;你的应用的安全需要你对它负责。window.postMessage就像是PHP相对于JavaScript技术。window.postMessage很酷,不是吗?

转载处:https://www.html5tricks.com/html5-window-postmessage.html 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值