H5里的postMessage API图文详解 详细介绍

关于postmessage,虽然说是html5的功能但是支持ie8+,假如你的网站不需要支持ie6和ie7,那么可以使用window.postmessage。既可以跨域传递,也可以同域传递。

我只是简单的举一个应用场景,当然,这个功能很多地方可以使用。

假如你有一个页面,页面中拿到部分用户信息,点击进入另外一个页面,另外的页面默认是取不到用户信息的,你可以通过window.postMessage把部分用户信息传到这个页面中。(当然,你要考虑安全性等方面。)

代码举例

发送信息:

JavaScript Code复制内容到剪贴板

//弹出一个新窗口   var domain = 'https://haorooms.com';   var myPopup = window.open(domain                + '/windowPostMessageListener.html','myWindow');     //周期性的发送消息   setTimeout(function(){       //var message = '当前时间是 ' + (new Date().getTime());            var message = {name:"站点",sex:"男"}; //你在这里也可以传递一些数据,obj等       console.log('传递的数据是  ' + message);       myPopup.postMessage(message,domain);   },1000);

要延迟一下,我们一般用计时器setTimeout延迟再发用。

接受的页面

JavaScript Code复制内容到剪贴板

//监听消息反馈   

window.addEventListener('message',function(event) {       if(event.origin !== 'https://haorooms.com') return; //这个判断一下是不是我这个域名跳转过来的       console.log('received response:  ',event.data);   },false);

如下图,接受页面得到数据

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

JavaScript Code复制内容到剪贴板

//捕获iframe   var domain = 'https://haorooms.com';   var iframe = document.getElementById('myIFrame').contentWindow;     //发送消息   setTimeout(function(){       //var message = '当前时间是 ' + (new Date().getTime());            var message = {name:"站点",sex:"男"}; //你在这里也可以传递一些数据,obj等       console.log('传递的数据是:  ' + message);           //send the message and target URI       iframe.postMessage(message,domain);    },1000);

接受数据

JavaScript Code复制内容到剪贴板

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

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

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

调用实例
 主线程中创建 Worker 实例,并监听 onmessage 事件

JavaScript Code复制内容到剪贴板

            Test Web worker         function init(){      var worker = new Worker('compute.js');      //event 参数中有 data 属性,就是子线程中返回的结果数据     worker.onmessage= function (event) {       // 把子线程返回的结果添加到 p 上      document.getElementById("result").innerHTML +=          event.data+"
"; }; }

 

在客户端的 compute.js 中,只是简单的重复多次加和操作,最后通过 postMessage 方法把结果返回给主线程,目的就是等待一段时间。而在这段时间内,主线程不应该被阻塞,用户可以通过拖拽浏览器,变大缩小浏览器窗口等操作测试这一现象。这个非阻塞主线程的结果就是 Web Workers 想达到的目的。

compute.js 中调用 postMessage 方法返回计算结果

JavaScript Code复制内容到剪贴板

var i=0;    function timedCount(){     for(var j=0,sum=0;j<100;j++){      for(var i=0;i<100000000;i++){       sum+=i;      }     }     // 调用 postMessage 向主线程发送消息    postMessage(sum);    }      postMessage("Before computing,"+new Date());    timedCount();    postMessage("After computing,"+new Date());

相信看了这些案例你已经掌握了方法,更多精彩请关注创想鸟其它相关文章!

相关阅读:

用Js操作HTTP的Cookie的实现步骤

html 边框虚线的实现步骤

AJAX的常用语法是什么

以上就是H5里的postMessage API图文详解 详细介绍的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1545321.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月21日 16:53:16
下一篇 2025年12月14日 14:19:19

相关推荐

  • 浏览器兼容HTML5和CSS3的问题

     html5和css3是非常好用并且功能强大的新属性,唯一的重大缺陷就是可能很多旧版浏览器不兼容,今天就给大家分享一下关于旧版的浏览器兼容html5和css3的问题。 1.让老式浏览器支持HTML5  HTML5能为我们做的事儿很多,最为可口的就是语义化标签的应用,如果你已经在Chrome或者其他支…

    好文分享 2025年12月21日
    000
  • HTML5标签嵌套规则的详细介绍

    下面给大家带来一份html5标签嵌套规则的详细介绍,总结归纳的非常不错,值得大家作为参考,一起来看一下。 [1]分类 [2]子元素 [3]总结 前面的话   在html5中,元素的子元素可以是块级元素,这在以前是被认为不符合规则的。本文将详细介绍html5的标签嵌套规则 分类   html5出现之前…

    好文分享 2025年12月21日
    000
  • 用H5制作烟花粒子特效的制作方法

    这次给大家带来用h5制作烟花粒子特效的制作方法,怎么用h5制作特效?h5制作烟花粒子特效的流程,h5制作烟花粒子特效的注意事项有哪些,一起来看一下。 Canvas烟花粒子特效制作 Canvas is not supported by your browser. Css部分:* { margin: 0…

    好文分享 2025年12月21日
    000
  • 用H5制作水滴特效教程

    给大家带来用h5制作h5制作水滴特效教程,怎么用h5制作特效?h5制作水滴特效的流程,h5制作水滴特效的注意事项有哪些,一起来看一下。 利用canvas 画布制作逼真的水滴特效 /* NOTE: The styles were added inline because Prefixfree need…

    好文分享 2025年12月21日
    000
  • 用H5和CSS3制作全屏背景轮换播放教程

    这次给大家带来用h5和css3制作全屏背景轮换播放的制作方法,怎么用h5制作特效?h5和css3在使用过程中的注意事项有哪些,下面就是实战案例,一起来看一下。 全屏背景轮换播放 #bg{ position:fixed; top:0; left:0; bottom:0; right:0; z-inde…

    好文分享 2025年12月21日
    000
  • HTML5响应式banner制作教程

    这次给大家带来用html5响应式banner制作方法,怎么用h5制作特效?html5响应式banner的注意事项有哪些,下面就是实战案例,一起来看一下。 HTML5响应式banner MULTIPURPOSE THEME CRAS JUSTO ODIO, DAPIBUS AC FACILISIS R…

    好文分享 2025年12月21日
    000
  • HTML5视频音频实现步骤

    我们知道,常见的视频格式的组成部分有:画面、音频、编码格式,常见的音频格式有音频编码:acc、mp3、vorbis,在html5里,支持的视频格式有三种,今天就来说一下html5视频音频实现步骤 HTML5支持的视频格式:          Ogg=带有Theora视频编码+Vorbis音频编码的O…

    好文分享 2025年12月21日
    000
  • HTML5的新增了哪些标签元素

    大家知道h5新增了不少的元素标签,那么我们就给大家总结归纳一下,h5增加了哪些标签?这些标签都有什么作用。 Input  type=“XXX” Email 邮箱: 提示格式不正确 url   地址  :地址格式:http://www….. Number:数值型  立即学习“前端免费学习笔…

    好文分享 2025年12月21日
    000
  • HTML5里Canvas常用的绘图技巧

    在h5里我们会常用到canvas这个元素来绘制图形。那么我们今天就来介绍一下canvas怎么使用,canvas在哪些情形下可以使用。以及canvas的绘画技巧 canvas 用于在页面上 绘制图形 canvas概述: html5 canvas元素和javascript配合使用在页面上绘制图形 can…

    好文分享 2025年12月21日
    000
  • html5里交互元素的使用方法

    在h5里,交互元素就是和用户进行互动的元素,这一部分非常的重要,并且和之前的js控制的效果不同,h5相比于html增加了很多的交互元素,比如隐藏显示注脚就是其中的一个交互效果。 交互元素的使用 body{ font-size: 12px; } span{ font-weight: bold; } d…

    好文分享 2025年12月21日
    000
  • HTML5的标签元素怎么使用

    h5里面增加了一个 标签元素,那么我们要怎样使用呢?记得我们在html5版本以前布局网页底部版权时,都会习惯使用id=”footer”或class=”footer”来标记段落,但是在h5里有了这个标签之后,一切都简单了很多。 HTML5 标签元素 新增html5底部footer元素标签,对html …

    好文分享 2025年12月21日
    000
  • HTML5 标签怎么用

    这次我们来说一下对h5的footer标签,nav的基本语法和结构,nav配合什么标签使用,在什么情况下可以使用,帮助大家快速理解nav。 首先nav也是在html5中新增的元素标签。同时和其它新增标签一样,nav在传统html5以前版本Html布局中作为导航条相关常用命名来使用。 比如: 网站导航内…

    好文分享 2025年12月21日
    000
  • 怎样知道浏览器支不支持html5

    随着html5的技术的推广,现在全世界的开发人员几乎都在用h5建设自己的网站,但是这就出来了一个很大的弊端,有的老版本浏览器是不支持h5的,那我们怎么分别哪些支持哪些不支持呢?今天就给大家分享一个办法。 支持html5的浏览器; (1)Chrome,Firefox:支持html5很多年,而且有自动升…

    好文分享 2025年12月21日
    000
  • HTML5文字弹幕效果

    html5文字弹幕效果,挺有意思的,对html5感兴趣拿去研究,学习学习html5. 实现演示: 代码演示: PHP中文网–HTML5文字弹幕效果代码*{margin:0;padding:0;list-style: none;border:0;}body{background: #bcbcbc;}…

    2025年12月21日
    000
  • 六款好用的html5编辑器

    html5是万维网的核心语言、标准通用标记语言下的一个应用超文本标记语言(html)的第五次重大修改。在过去的两年中,html5吸引了大量的关注并且强力统治如今的互联网时代。由于互联网已经发生了翻天覆地的改变,使得html5不得不先人一步做出改变。html5编辑器实质上是用来制作网页的软件应用,专业…

    2025年12月21日 好文分享
    000
  • html5自己做一个类似windows的画图软件的方法

    这个绘图工具,我还没有做完,不过已经实现了总架构,以及常见的简易图形绘制功能: 1,可以绘制直线,圆,矩形,正多边形【已完成】 2,填充颜色和描边颜色的选择【已完成】 3,描边和填充功能的选择【已完成】 后续版本: 立即学习“前端免费学习笔记(深入)”; 橡皮擦,坐标系,线形设置,箭头,其他流程图形…

    2025年12月21日
    000
  • html5实现下雪效果的方法

    利用canvas,实现一个下雪的效果,我们先预览下效果: 我们先分析下这个效果: 1,随机产生雪花 2,雪花的产生不是同时产生,而是有先后顺序的 3,雪花怎么表示 立即学习“前端免费学习笔记(深入)”; 4,怎么源源不断的下雪 5,雪花有大有小 搞清楚上面几个问题之后,这个效果基本上就实现了, 首先…

    好文分享 2025年12月21日
    000
  • html5 1px问题以及绘制坐标系网格的方法

    在canvas中,要画出1px的线条,默认情况下是不行的 context.beginPath(); context.moveTo( 100, 100 ); context.lineTo( 400, 100 ); context.closePath(); context.stroke(); conte…

    2025年12月21日
    000
  • 关于h5中新增的几个背景属性和文本属性

    一、背景图像显示: ①background-size:规定背景图像的大小; 值:像素值、百分比、auto、cover、contain ②background-origin :规定背景图像的起始位置; 值:padding-box(默认)、content-box、border-box ③backgrou…

    好文分享 2025年12月21日
    000
  • 防止html5的video标签在iphone中自动全屏的方法

      问题: 当在iphone中打开html5页面中的video视频时,会默认调取系统播放器,全屏播放视频资源。   解决方式: 1. 首先在html5页面的video标签中添加webkit-playsinline=true;         接着在UIWebView中设置allowsInlineMe…

    好文分享 2025年12月21日
    000

发表回复

登录后才能评论
关注微信