详解html5 postMessage解决跨域通信的问题


Posted in HTML / CSS onAugust 17, 2018

本文介绍了详解html5 postMessage解决跨域通信的问题,分享给大家,具体如下:

效果图

详解html5 postMessage解决跨域通信的问题

postmessage解析HTML5提供了新型机制PostMessage实现安全的跨源通信. 语法 otherWindow.postMessage(message, targetOrigin, [transfer]);

otherWindow: 其他窗口的一个引用, 比如IFRAME的contentWindow属性, 执行,window.open返回的窗口对象. message: 将要发送到其他窗口的数据. targetOrigin:通过窗口的origin属性来指定哪些窗口能接收到消息事件, 其值可以是字符”*”(表示无限制)或者一个URL transfer:是一串和message同时传递的Transferable对象. 这些对象的所有权将被转移给消息的接收方, 而发送一放将不再保有所有权.element.addEventListener(event,fn,useCaption ); 三个参数 event 事件 比如click mouseenter mouseleave 回调函数 useCaption用于描述是冒泡还是捕获。默认值是false,即冒泡传递。 当值为true,就是捕获传递。实现方式

主界面 main.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>跨域数据访问</title>
  <script type="text/javascript">
         window.addEventListener('message',function(e){
           console.log("e--->",e);
           const data = e.data;
           document.getElementById('main1').style.backgroundColor=e.data;
         },false)

  </script>
</head>
<body>
  <div id="main1" style="width:200px;height:200px;margin:100px;border:solid 1px #000;">
     我是主界面,等待接收iframe的传递
  </div>
  <div style="margin:100px;">
     iframe
     <iframe src="http://localhost:3000/iframe.html" width="800px" height="300px" ></iframe>
  </div>
</body>
</html>

iframe界面

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
    <style type="text/css">
           html,body{
               height:100%;
               margin:0px;
           }
    </style>
</head>
  <body style="height:100%;">
        <div id="frame" style="height:200px; width:200px;background-color:rgb(204, 204, 0)" onclick="changeColor()">
           点击改变颜色
        </div>
        <script type="text/javascript">
             function changeColor(){
               var frame = document.getElementById('frame');
               var color=frame.style.backgroundColor;
               if(color=='rgb(204, 102, 0)'){
                   color='rgb(204, 204, 0)';
               }else{
                   color='rgb(204,102,0)';
               }
                console.log("frame===>",frame);
                console.log("color",color);
               frame.style.backgroundColor=color;
               window.parent.postMessage(color,'*');
             }
        </script>
  </body>
</html>

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

HTML / CSS 相关文章推荐
用纯css3和html制作泡沫对话框实现代码
Mar 21 HTML / CSS
CSS3动画效果回调处理详解
Dec 10 HTML / CSS
使用CSS3制作响应式导航菜单的方法
Jul 12 HTML / CSS
使用CSS3的font-face字体嵌入样式的方法讲解
May 13 HTML / CSS
css3实现可拖动的魔方3d效果
May 07 HTML / CSS
CSS3属性 line-clamp控制文本行数的使用
Mar 19 HTML / CSS
HTML5的革新 结构之美
Jun 20 HTML / CSS
html5 Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点
Jan 09 HTML / CSS
html5 Canvas画图教程(11)—使用lineTo/arc/bezierCurveTo画椭圆形
Jan 09 HTML / CSS
基于HTML5 Canvas:字符串,路径,背景,图片的详解
May 09 HTML / CSS
HTML5中5个简单实用的API
Apr 28 HTML / CSS
html2canvas生成的图片偏移不完整的解决方法
May 19 HTML / CSS
HTML5 manifest离线缓存的示例代码
Aug 08 #HTML / CSS
移动端Html5页面生成图片解决方案
Aug 07 #HTML / CSS
详解WebSocket跨域问题解决
Aug 06 #HTML / CSS
canvas实现二维码和图片合成的示例代码
Aug 01 #HTML / CSS
HTML5拖拽功能实现的拼图游戏
Jul 31 #HTML / CSS
Html5页面二次分享的实现
Jul 30 #HTML / CSS
利用Storage Event实现页面间通信的示例代码
Jul 26 #HTML / CSS
You might like
WordPress中重置文章循环的rewind_posts()函数讲解
2016/01/11 PHP
PHP实现批量重命名某个文件夹下所有文件的方法
2017/09/04 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
php + ajax 实现的写入数据库操作简单示例
2020/05/16 PHP
破除一些网站复制、右键限制
2006/11/04 Javascript
Javascript中Eval函数的使用说明
2008/10/11 Javascript
Ext 表单布局实例代码
2009/04/30 Javascript
Jquery AJAX 框架的使用方法
2009/11/03 Javascript
JavaScript的Module模式编程深入分析
2013/08/13 Javascript
node.js中的fs.fchownSync方法使用说明
2014/12/16 Javascript
详述JavaScript实现继承的几种方式(推荐)
2016/03/22 Javascript
jQuery操作属性和样式详解
2016/04/13 Javascript
js 作用域和变量详解
2017/02/16 Javascript
JavaScript ES6中export、import与export default的用法和区别
2017/03/14 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
解决vue-router进行build无法正常显示路由页面的问题
2018/03/06 Javascript
JS实现json对象数组按对象属性排序操作示例
2018/05/18 Javascript
关于vue v-for循环解决img标签的src动态绑定问题
2018/09/18 Javascript
uni-app实现点赞评论功能
2019/11/25 Javascript
Vue js with语句原理及用法解析
2020/09/03 Javascript
Python的Django框架中URLconf相关的一些技巧整理
2015/07/18 Python
python机器学习实战之K均值聚类
2017/12/20 Python
python 连接各类主流数据库的实例代码
2018/01/30 Python
python安装教程
2018/02/28 Python
纯DOM+CSS3实现简单的小风车动画
2016/09/27 HTML / CSS
CSS3中animation实现流光按钮效果
2020/12/21 HTML / CSS
体育教师工作总结的自我评价
2013/10/10 职场文书
会计实习自我鉴定
2013/12/04 职场文书
洗煤厂厂长岗位职责
2014/01/03 职场文书
工业自动化毕业生自荐信范文
2014/01/04 职场文书
大四学生思想汇报
2014/01/13 职场文书
群众路线自我剖析及整改措施
2014/11/04 职场文书
反腐倡廉观后感
2015/06/08 职场文书
浅谈Python数学建模之整数规划
2021/06/23 Python
部分武汉产收音机展览
2022/04/07 无线电
码云(gitee)通过git自动同步到阿里云服务器
2022/12/24 Servers