目录

一、概述

二、详解


一、概述

作用

该方法是HTML5引入的API,可以通过异步方式实现跨源通信,多用于窗口间数据通信。它提供了一种受控机制来规避不同源脚本无法通信的限制,只要正确使用,这种方法很安全。

什么是跨源

同源即指相同的协议、域名或IP、端口号。浏览器具有同源限制,同源脚本可以相互通信,一般非同源(跨源)的脚本文件禁止相互通信。

语法

message事件

通过绑定window的message事件来监听发送的跨文档消息传输内容。

二、代码示例

示例1

发送程序如下代码所示。

<div><input id="text" type="text" value="demo" /><button id="btn">发送消息</button>
</div>
<iframe loading="lazy" id="iframe" src="https://c.runoob.com/runoobtest/postMessage_receiver.html" width="300" height="360"><p>你的浏览器不支持 iframe。</p>
</iframe><script>window.onload = function() {var receiver = document.getElementById('iframe').contentWindow;var btn = document.getElementById('btn');btn.addEventListener('click', function (e) {e.preventDefault();var val = document.getElementById('text').value;receiver.postMessage("Hello", "https://c.runoob.com");});}
</script>

接收程序如下代码所示。

<script>
// 监听 message 事件
window.addEventListener('message', function (e) {  if (e.origin !== "https://www.runoob.com") {  // 验证消息来源地址return;}console.log("从"+ e.origin +"收到消息: " + e.data);
});
</script>
  • e.source:消息源,消息的发送窗口/iframe
  • e.origin:消息源的URL(可能包含协议、域名或IP、端口),用来验证数据
  • e.data:发送过来的数据

示例2:iframe父子页面通信

接收消息的一方需要监听message事件。

window.addEventListener(“message”, ()=> { });

父页面向子页面传递信息。

let ifr = document.getElementById("iframe")
ifr.contentWindow.postMessage('父页面向子页面发送消息', "*")// orifr.contentWindow.postMessage('父页面向子页面发送消息', "http://10.192.195.166:56225/son.html")

子页面向父页面传递数据。

window.parent.postMessage('子页面向父页面发送消息','*')

postMessage详解相关推荐

  1. 前端跨域之PostMessage详解

    window.postMessage() 方法可以安全地实现跨源通信.通常,对于两个不同页面的脚本,只有当执行它们的页面位于具有相同的协议(通常为https),端口号(443为https的默认值),以 ...

  2. DELPHI 中 Window 消息大全使用详解

    Window 消息大全使用详解 导读: Delphi是Borland公司的一种面向对象的可视化软件开发工具. Delphi集中了Visual C++和Visual Basic两者的优点:容易上手.功能 ...

  3. 【转】4.1触碰jQuery:AJAX异步详解

    传送门:异步编程系列目录-- 示例源码:触碰jQuery:AJAX异步详解.rar AJAX 全称 Asynchronous JavaScript and XML(异步的 JavaScript 和 X ...

  4. 窗口发送消息参数详解

    窗口发送消息参数详解 //    窗口.发送消息    函数功能: 将指定的消息发送到一个窗口,同win32 api 里面的SendMessage等同的效果 中文函数原型: 发送消息(hwnd,msg ...

  5. [vb]一些窗口消息的详解

    代码: Public Const WM_NULL = &H0 '空消息 Public Const WM_NCCREATE = &H81 '当窗口第一次被创建时,此消息在WM_CREAT ...

  6. Windows 窗口发送消息参数详解

    窗口发送消息参数详解 // 窗口.发送消息 函数功能: 将指定的消息发送到一个窗口,同win32 api 里面的SendMessage等同的效果中文函数原型: 发送消息(hwnd,msg,wparam ...

  7. Windows API函数大全---附:windows运行命令详解

    1. API之网络函数             WNetAddConnection 创建同一个网络资源的永久性连接             WNetAddConnection2 创建同一个网络资源的连 ...

  8. VC++深入详解学习笔记

    VC++深入详解学习笔记 Lesson1: Windows程序运行原理及程序编写流程 Lesson2: 掌握C++基本语法 Lesson3: MFC框架程序剖析 Lesson4: 简单绘图 Lesso ...

  9. JavaScript作用域和作用域链详解

    JavaScript作用域链详解 一.JavaScript作用域 JavaScript作用域是什么? 作用域范围 二.JavaScript作用域链 作用域与执行上下文 总结 一.JavaScript作 ...

最新文章

  1. Java中的异常处理:何时抛出异常,何时捕获异常?
  2. “非自回归”也不差:基于MLM的阅读理解问答
  3. 机械硬盘 运行 linux 很慢,如果读写硬盘操作有问题,假死机、很慢等,就检查一下硬盘坏道...
  4. 使用uiautomator2进行webview页面的测试
  5. mysql 初级练习题
  6. 龙腾P2P流媒体点播系统商业计划书
  7. java实现MD5加密的三种方式
  8. js中文转拼音插件源码
  9. 经典日常英语口语回汇总大全
  10. 连续时间正弦信号和离散时间正弦信号
  11. 魔金(7)——金字塔
  12. ae,me,pr功能区别
  13. android mac 照片恢复,照片恢复
  14. 红蓝对抗-红蓝对抗经验总结
  15. 神经网络实现逻辑运算,神经网络 最小二乘法
  16. 英雄杀小程序微信区分服务器吗,英雄杀小程序
  17. 自我总结前端vue笔记
  18. [数据结构]数据结构简介和顺序表
  19. 前端架构带你 封装axios,一次封装终身受益「美团后端连连点赞」
  20. C#【保留小数点后位数】与【字符串数字格式化】

热门文章

  1. uncooked 计算机术语,物流专业英语和计算机基础练习题.doc
  2. 8.1 ElasticSearch Kibana
  3. 茧数SCRM产品介绍系列:智能名片
  4. matlab 用visio编辑_在线运行Matlab, Visio, Office, SPSS...,科研者的福利
  5. 分叉不等于分裂,关于硬分叉你知道多少?
  6. adb.exe无法运行,提示0xc000007b错误
  7. C语言选择结构(if语句)
  8. 北京大学董豪:招具身智能、智能机器人、计算机视觉科研实习生
  9. 【STM8】STM8S介绍(编程环境、烧录、芯片内容)(Vcap需要一个电容接地)
  10. 方便的记事本app有哪些 快捷方便的生活记事软件推荐