问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何使用postmessage方式实现跨域访问

发布网友 发布时间:2022-04-19 23:12

我来回答

2个回答

懂视网 时间:2022-04-20 03:33

本篇文章给大家带来的内容是关于html5新机制:postMessage实现安全跨域通信(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

效果图

161113223-5b762e6f55e2d_articlex.gif

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>
     <p id="main1" style="width:200px;height:200px;margin:100px;border:solid 1px #000;">
     我是主界面,等待接收iframe的传递
     </p>
     <p style="margin:100px;">
     iframe
     <iframe src="http://localhost:3000/iframe.html" width="800px" height="300px" ></iframe>
     </p>
    </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%;">
     <p id="frame" style="height:200px; width:200px;background-color:rgb(204, 204, 0)" onclick="changeColor()">
      点击改变颜色
     </p>
     <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>

    热心网友 时间:2022-04-20 00:41

    你跨域想做到什么效果?
    跨域的关键在于对方允许你的跨域访问
    你这边再怎么单方面努力都是没用的……
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    巧师傅榴莲千层蛋糕(6寸500g)-适用对象 巧师傅 榴莲千层蛋糕 6寸 500g-马来西亚苏丹王榴莲肉,口感鲜甜软糯_百... 巧师傅榴莲千层蛋糕500g-精选苏丹王榴莲果肉,口感浓郁 巧师傅苏丹王榴莲千层蛋糕-适用对象 阿卡丽和卡特琳娜,哪一个比较好。 英雄联盟阿卡丽和卡特琳纳哪个比较好…为什么? 求大神分析 阿卡丽和卡特琳娜单挑 谁会赢? 河北5+3临床医学有哪些学校 ...块数比20多,比40少,5块5块地数正好数完,2块2块地数也正好数完?_百... ...比20小,它3个3个数或4个4个数都正好数完,这个数是多少..._百度知... 对于学校两个食堂水果价格的价格调查总体如何界定? 孟嘉钰这个名字打多少分? 怎样写申请高校食堂套餐标准价格上调 吉嘉钰的名字如何 经常吃冰箱里冷冻的东西会不会体寒? 耿嘉钰姓名测试打分 春节期间菜价贵食堂亏损报告怎样写? 挨着冰箱能放吃的吗吃的还能有辐射吗 2014年元月21号凌晨1点半出生的女孩取名,姓伍,子辈玉,取什么名字好听,五行喜火?要火旁或者木 梦见自己大便硬,没带纸别人给的纸,梦见没拉完,拉不出来了,就擦了 在关系模型中,关系中不允许出现相同元组的约束是通过什么来实现 A候选键 B主键 C外键 D表 在关系模型中 通过设置什么规则保护数据的一致性和完整性 农银金太阳两全保险分红型扣年费吗 农银人寿保险股分有限公司的分红型产品靠谱吗? 我是你的偏爱你是我的例外是什么意思 有钱人穿假的Nike adidas也像真的,没钱人穿真的也像假的。 情话你是我的甜蜜素什么意思? 你是我的阿托品是什么意思 营口市营口新红运酒店怎么样?有什么好玩的地方? 请问营口在辽宁的地位? 如何为职工食堂菜价定价 关于学校食堂菜价的谈判方案 赵嘉钰名字怎么样? 邢嘉钰这个女孩子的名字好不好 怎么更改QQ上显示的登陆地址 怎样更改登录地理位置? 非法持有达到多少克判十年 制定禁毒法的指导原则是 政法委是什么部门,好不好 菲律宾总统杜特尔特,为禁毒四年打死数千名毒贩,为何如今被告上法院? 英国面积排在世界的第几位??? 英国的国土面积多大? 谁能给我张“滚”字的图片、“滚”字稍微大点 求QQ炫舞爱空间相册的六张图(看完给老子滚) 金馆长搞笑图片带你给我滚字 谁能给我提供世界上最恐怖、最狰狞、最异类、又有毒的昆虫,最好有图片或者视频,我高分悬赏,玩闹的滚爬 我和男朋友开玩笑拍个上厕所的照片给他看,他凶巴巴的说你给老子滚,,脾气比以前爆很多很多 黄子韬:有多远给我滚多远,黄子韬为何会突然勃然大怒? 如何以「玩够了就从老子身上滚下去」开头写一篇追夫火葬场的文? 男友对你说,给老子滚蛋,你会原谅他吗?还会给他继续下去吗?