首页前端开发HTMLHTML5的postMessage的使用手册

HTML5的postMessage的使用手册

时间2024-01-25 00:05:21发布访客分类HTML浏览565
导读:收集整理的这篇文章主要介绍了HTML5的postMessage的使用手册 ,觉得挺不错的,现在分享给大家,也给大家做个参考。 我们在码代码的时候,经常会碰到以下跨域的情况:1、页面内嵌套iframe,与iframe的消息传递2、页...
收集整理的这篇文章主要介绍了HTML5的postMessage的使用手册 ,觉得挺不错的,现在分享给大家,也给大家做个参考。

我们在码代码的时候,经常会碰到以下跨域的情况:

1、页面内嵌套iframe,与iframe的消息传递

2、页面与多个页面之间的传递消息

针对这些令人头疼的跨域问题,htML5特地推出新功能--postMessage(跨文档消息传输)。postMessage在使用时,需要传入2个参数,data和originUrl。data是指需要传递的内容,但是部分浏览器只能处理字符串参数,所以我们一般把data序列化一下,即JSON.stringify(),originUrl是指目标url,指定的窗口。

下面直接甩例子,相信大家更容易理解写。

1、页面内嵌套iframe

父页面:

html:

@H_406_17@div id='parent'> hello word postMessage/div> iframe src="http://127.0.0.1:8082/index2.html" id='child'> /iframe>

js:

window.onload=function(){
    window.frames[0].postMessage('postMessage','http://127.0.0.1:8082/index2.html')}
 window.addEventListener('message',function(e){
    console.LOG(e)    document.getElementById('parent').style.color=e.data}
    )

子页面:

html:

div id='button' onclick='changeColor();
    ' style="color:yellow">
    接受信息/div>
    

js:

window.addEventListener('message',function(e){
      console.log(e)      let color = document.getElementById('button').style.color      window.parent.postMessage(color,'http://127.0.0.1:8081/index.html')}
    );
function changeColor(){
      let buttonColor = document.getElementById('button').style.color      buttonColor='#f00'                 window.parent.postMessage(buttonColor,'http://127.0.0.1:8081/index.html')}
    

父页面通过postMessage的方法向iframe传递消息,而子页面通过window.addEventListener监听message方法来获取到父页面传递的值。如下图所示,data是父页面传递的值。

子页面向父页面传递消息,也是通过postMessage的方法去传递消息,不是过是以window.parent.postMessage(data,url)的方式传值。父页面获取值也是同样监听message事件。

2、多页面之间传递消息

父页面:

html:

div id='parent' onclick="postMessage()">
    hello word postMessage/div>
    

js:

let parent = document.getElementById('parent')function postMessage(){
    let windowOPEn=window.open('http://127.0.0.1:8082/index2.html','postMessage')    setTimeout(function(){
       windowOpen.postMessage('postMessageData','http://127.0.0.1:8082/index2.html')  }
,1000) }
    

子页面:

html:

div id='button' onclick='changeColor();
    ' style="color:#f00">
    接受信息/div>
    

js:

window.addEventListener('message',function(e){
      console.log(e) }
    );
    

父页面向子页面传递消息通过window.open打开另一个页面,然后向他传值。需要注意的是,使用postMessage传值的时候需要使用setTimeout去延迟消息的传递,因为子页面的加载不是一下子就加载完成的,也就是说子页面的监听事件还未开始,此时传值过去是接收不到的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

上一篇: Html5调用手机摄像头并实现人脸识...下一篇:使用html2canvas.js实现页面截图...猜你在找的html5相关文章 关于移动端h5开发相关内容总结2022-05-17html5教程-学表单的第二天2018-12-10html5教程-HTML5浏览器支持2018-12-10html5教程-HTML5智能表单2018-12-10html5教程-微信H5使用resLoader实现加载页效果2018-12-10html5教程-day01-初级-JS0-热身运动JS入门教程2018-12-10html5教程-html5shiv.js和respond.min.js2018-12-10html5教程-不同浏览器对于html5 audio标签和音频格式的兼容性2018-12-10html5教程-使用Html5实现手风琴案例2018-12-10html5教程-html5笔记2018-12-10 其他相关热搜词更多phpjavapython程序员load

若转载请注明出处: HTML5的postMessage的使用手册
本文地址: https://pptw.com/jishu/585908.html
使用html2canvas.js实现页面截图并显示或上传的示例代码 Html5调用手机摄像头并实现人脸识别的实现

游客 回复需填写必要信息