详解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 选择器 属性选择器介绍
Jan 21 HTML / CSS
CSS3中Color的一些特性介绍
May 27 HTML / CSS
初探CSS3中的calc()功能
Jul 14 HTML / CSS
CSS3解析抖音LOGO制作的方法步骤
Apr 11 HTML / CSS
HTML5 Canvas实现玫瑰曲线和心形图案的代码实例
Apr 10 HTML / CSS
突袭HTML5之Javascript API扩展4—拖拽(Drag/Drop)概述
Jan 31 HTML / CSS
HTML5本地存储localStorage、sessionStorage基本用法、遍历操作、异常处理等
May 08 HTML / CSS
html5在移动端的屏幕适应问题示例探讨
Jun 15 HTML / CSS
canvas实现漂亮的下雨效果的示例
Apr 18 HTML / CSS
html+css合并表格边框的示例代码
Mar 31 HTML / CSS
CSS3 制作的悬停缩放特效
Apr 13 HTML / CSS
html form表单基础入门案例讲解
Jul 21 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 radio 单选框获取与保持值的实现代码
2010/05/15 PHP
php session劫持和防范的方法
2013/11/12 PHP
php实现图片文件与下载文件防盗链的方法
2014/11/03 PHP
CI框架教程之优化验证码机制详解【验证码辅助函数】
2019/04/16 PHP
PHP大文件切割上传功能实例分析
2019/07/01 PHP
JQuery 小练习(实例代码)
2009/08/07 Javascript
复制Input内容的js代码_支持所有浏览器,修正了Firefox3.5以上的问题
2010/06/21 Javascript
extJS中常用的4种Ajax异步提交方式
2014/03/07 Javascript
JavaScript 学习笔记之基础中的基础
2015/01/13 Javascript
js实现右下角提示框的方法
2015/02/03 Javascript
13个PHP函数超实用
2015/10/21 Javascript
JS截取与分割字符串常用技巧总结
2015/11/10 Javascript
json实现添加、遍历与删除属性的方法
2016/06/17 Javascript
js实现适配不同的屏幕大小
2017/04/10 Javascript
Node.js利用js-xlsx处理Excel文件的方法详解
2017/07/05 Javascript
js链表操作(实例讲解)
2017/08/29 Javascript
node.js将MongoDB数据同步到MySQL的步骤
2017/12/10 Javascript
基于jquery.page.js实现分页效果
2018/01/01 jQuery
深入浅析Node环境和浏览器的区别
2018/08/14 Javascript
解决angular2在双向数据绑定时[(ngModel)]无法使用的问题
2018/09/13 Javascript
给localStorage设置一个过期时间的方法分享
2018/11/06 Javascript
高效jQuery选择器的5个技巧实例分析
2019/11/26 jQuery
动态创建类实例代码
2009/10/07 Python
Python中使用logging模块代替print(logging简明指南)
2014/07/09 Python
Python 通过pip安装Django详细介绍
2017/04/28 Python
Python中psutil的介绍与用法
2019/05/02 Python
Python 使用PyQt5 完成选择文件或目录的对话框方法
2019/06/27 Python
浅谈css3中calc在less编译时被计算的解决办法
2017/12/04 HTML / CSS
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
英国复古服装购物网站:Collectif
2019/10/30 全球购物
爱护公共设施的标语
2014/06/24 职场文书
党校学习心得体会范文
2014/09/09 职场文书
合法的离婚协议书范本
2014/10/23 职场文书
财务工作个人总结
2015/02/27 职场文书
焦裕禄观后感
2015/06/03 职场文书
增值税发票丢失证明
2015/06/19 职场文书