详解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样式linear-gradient的使用实例
Jan 16 HTML / CSS
使用CSS3实现圆角,阴影,透明
Dec 23 HTML / CSS
CSS3中的Transition过度与Animation动画属性使用要点
May 20 HTML / CSS
浅析css3中matrix函数的使用
Jun 06 HTML / CSS
css3一个简易的 LED 数字时钟实现方法
Jan 15 HTML / CSS
canvas学习笔记之绘制简单路径
Jan 28 HTML / CSS
html5与css3小应用
Apr 03 HTML / CSS
HTML5手机端弹出遮罩菜单特效代码
Jan 27 HTML / CSS
浅谈关于html5中图片抛物线运动的一些心得
Jan 09 HTML / CSS
html5简介及新增功能介绍
May 18 HTML / CSS
CSS3实现的文字弹出特效
Apr 16 HTML / CSS
CSS中使用grid布局实现一套模板多种布局
Jul 15 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
用PHP 4.2书写安全的脚本
2006/10/09 PHP
php中使用接口实现工厂设计模式的代码
2012/06/17 PHP
深入file_get_contents函数抓取内容失败的原因分析
2013/06/25 PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
2015/10/23 PHP
PHP输出多个元素的排列或组合的方法
2017/03/14 PHP
JS图片浏览组件PhotoLook的公开属性方法介绍和进阶实例代码
2010/11/09 Javascript
javascript数组去重方法终极总结
2014/06/05 Javascript
JavaScript 对象深入学习总结(经典)
2015/09/29 Javascript
实例讲解Jquery中隐藏hide、显示show、切换toggle的用法
2016/05/13 Javascript
Bootstrap table使用方法总结
2017/05/10 Javascript
jQuery实现获取及设置CSS样式操作详解
2018/09/05 jQuery
如何在 JavaScript 中更好地利用数组
2018/09/27 Javascript
angularjs通过过滤器返回超链接的方法
2018/10/26 Javascript
微信小程序使用map组件实现获取定位城市天气或者指定城市天气数据功能
2019/01/22 Javascript
node.js实现微信开发之获取用户授权
2019/03/18 Javascript
使用vue中的混入mixin优化表单验证插件问题
2019/07/02 Javascript
Vue分页效果与购物车功能
2019/12/13 Javascript
Python中的元类编程入门指引
2015/04/15 Python
在Django框架中编写Contact表单的教程
2015/07/17 Python
python3实现暴力穷举博客园密码
2016/06/19 Python
python中import reload __import__的区别详解
2017/10/16 Python
python使用pil库实现图片合成实例代码
2018/01/20 Python
对django views中 request, response的常用操作详解
2019/07/17 Python
Python编译成.so文件进行加密后调用的实现
2019/12/23 Python
在Sublime Editor中配置Python环境的详细教程
2020/05/03 Python
python利用paramiko实现交换机巡检的示例
2020/09/22 Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
2020/11/30 Python
美国领先的精品家居照明和装饰产品在线零售商:LightsOnline.com
2018/01/23 全球购物
文秘专业毕业生就业推荐信
2013/11/08 职场文书
中专生职业生涯规划书范文
2014/01/10 职场文书
环保倡议书怎么写
2014/05/16 职场文书
小学秋季运动会报道稿
2014/09/30 职场文书
2014年民主评议党员工作总结
2014/12/02 职场文书
2015年高校辅导员工作总结
2015/04/20 职场文书
采购员工作总结范文
2015/08/12 职场文书
Windows下用Nginx配置https服务器及反向代理的问题
2021/09/25 Servers