返回顶部
首页 > 资讯 > 前端开发 > JavaScript >详解如何让页面与 iframe 进行通信
  • 781
分享到

详解如何让页面与 iframe 进行通信

2024-04-02 19:04:59 781人浏览 八月长安
摘要

目录引言iframe 向父级页面发送消息父级页面向 iframe 发送消息接收消息指定发送消息的域名引言 这篇文章介绍如何实现页面与 iframe 进行通信,实际工作中可能很难遇到,

引言

这篇文章介绍如何实现页面与 iframe 进行通信,实际工作中可能很难遇到,但一旦遇到了,我们要能够立即想到怎样去实现。

iframe 向父级页面发送消息

在 iframe 页面,使用 window.parent 调用 postMessage 方法,即可发送消息给父级页面。

window.parent.postMessage(message, '*');

message 只能是 String 类型,所以如果想发送多条数据,可以使用 JSON 序列化对象。

// 序列化对象
const message = jsON.stringify({
  message: 'Hello',
  date: Date.now(),
});
window.parent.postMessage(message, '*');

使用 JSON.stringify 方法对内容进行序列话,即可在传入 postMessage 方法。

父级页面向 iframe 发送消息

在父级页面,使用 iframe.contentWindow 调用 postMessage 方法,即可发送消息给 iframe。

iframeEl.contentWindow.postMessage(message, '*');

iframeEl 表示 iframe DOM 对象。

通过上面两个例子,我们可以得到一个信息。

向谁发送消息,那么调用者对象就是这个发送消息的目标对象,而不是当前对象。

这一点需要非常注意,这里是很容里踩坑的。

接收消息

无论是在 iframe 页面还是父级页面,都是使用 window 监听 message 事件接收消息。

window.addEventListener('message', function (e) {
  // 获取消息内容 data
  const { data } = e;
});

如果消息内容是序列化后的对象,还需要将消息内容反序列化。

window.addEventListener('message', function (e) {
  // 获取消息内容 data
  let { data } = e;
  data = JSON.parse(data);
});

使用 JSON.parse 方法对内容进行反序列化,即可的到传递过来的内容对象。

指定发送消息的域名

上面我们使用 postMessage 方法,传递的第二个参数都是 *,这里的含义是指任何域名都能接收消息。

建议如果知道消息接收方的域名,第二个参数请传递消息接收方的域名。因为这里是会存在安全隐患的,任何站点都可以向你的站点发送消息,如果没有做相关安全处理,是很容易造成攻击的。

iframeEl.contentWindow.postMessage(message, 'https://www.baidu.com');

上面的示例代码标识仅当 iframe 的指向 Https://www.baidu.com 时才会发送消息。

通过制定域名的的方式,避免安全隐患。

以上就是详解如何让页面与 iframe 进行通信的详细内容,更多关于页面与iframe通信的资料请关注编程网其它相关文章!

--结束END--

本文标题: 详解如何让页面与 iframe 进行通信

本文链接: https://lsjlt.com/news/165872.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 详解如何让页面与 iframe 进行通信
    目录引言iframe 向父级页面发送消息父级页面向 iframe 发送消息接收消息指定发送消息的域名引言 这篇文章介绍如何实现页面与 iframe 进行通信,实际工作中可能很难遇到,...
    99+
    2024-04-02
  • web网页与小程序间如何进行通信
    本篇内容介绍了“web网页与小程序间如何进行通信”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!我们的微信小程序采用的web-view的方式内...
    99+
    2023-06-21
  • JS如何对Iframe内外页面进行操作总结
    目录在iframe外获取iframe里的内容方式一方式二在iframe内获取iframe外的内容在iframe中调用父页面中定义的方法和变量在父页面操作iframe子页面的方法和变量...
    99+
    2024-04-02
  • 如何与iframe进行跨域交互
    这篇文章主要介绍“如何与iframe进行跨域交互”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何与iframe进行跨域交互”文章能帮助大家解决问题。前言在Web开发中,为了避免安全漏洞,浏览器会实...
    99+
    2023-07-05
  • 如何进行socket通信
    本篇文章为大家展示了如何进行socket通信,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、使用socket实现一对一的简单通信  socket就是一个开往网络应用必备的功能模块。通过这...
    99+
    2023-06-04
  • layui type2如何通过url给iframe子页面传值
    这篇文章主要介绍了layui type2如何通过url给iframe子页面传值,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。A页面 调用la...
    99+
    2024-04-02
  • 如何使用Golang与RabbitMQ进行高效通信?
    要使用Golang与RabbitMQ进行高效通信,可以按照以下步骤进行操作:1. 安装RabbitMQ:首先需要安装RabbitMQ...
    99+
    2023-10-08
    Golang
  • SharedWorker 多页面相互通信示例详解
    目录正文什么是 SharedWorker使用 SharedWorker通信指定页面通信实战SharedWorker 的关闭SharedWorker 的生命周期SharedWorker...
    99+
    2022-12-08
    SharedWorker 多个页面通信 SharedWorker 页面通信
  • 微信小程序如何在页面跳转时进行页面导航
    目录1.声明式导航2.编程式导航3.导航传参总结1. 什么是页面导航 页面导航指的是页面之间的相互跳转。例如,浏览器中实现页面导航的方式有如下两种: ① a链接 ② location...
    99+
    2024-04-02
  • 如何进行微信小程序的页面跳转
    本篇文章为大家展示了如何进行微信小程序的页面跳转,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。我们将创建第二个视图,然后实现从第一个视图到第二个视图的跳转。首先开发第二个视图:微信小程序开发系列七:...
    99+
    2023-06-05
  • Angular组件如何进行通信
    小编给大家分享一下Angular组件如何进行通信,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!准备一下我们的环境:1、创建一个h...
    99+
    2024-04-02
  • 如何进行TCP通信实现
    本篇文章给大家分享的是有关如何进行TCP通信实现,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。TCP是底层通讯协议,定义的是数据传输和连接方式的规范。TCP协议,传输控制协议(...
    99+
    2023-06-05
  • Spring 框架中如何与 PHP 进行同步通信?
    Spring 是一个流行的 Java 开发框架,它提供了许多强大的功能,包括依赖注入、面向切面编程和模板设计模式等。然而,有时候我们需要与其他编程语言进行通信,比如 PHP。那么,在 Spring 框架中如何实现与 PHP 的同步通信呢?...
    99+
    2023-10-29
    同步 linux spring
  • 详解两个Node.js进程是如何通信
    目录前言不同电脑上的两个 Node.js 进程间通信 使用 TCP 套接字 使用 HTTP 协议 同一台电脑上两个 Node.js 进程间通信 使用内置 IPC 通道 使用自定义管道...
    99+
    2024-04-02
  • vue中如何通过iframe方式加载本地的vue页面
    目录通过iframe方式加载本地的vue页面iframe方式加载本地的vue页面的第一种方法iframe方式加载本地的vue页面的第二种方法iframe方式加载本地的vue页面的第三...
    99+
    2024-04-02
  • html如何进行页面跳转
    这篇“html如何进行页面跳转”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“html如何进行页面跳转”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所收获,下面让我们一起来看...
    99+
    2023-06-06
  • HTML5如何进行预加载让页面得以快速呈现
    这篇文章主要讲解了“HTML5如何进行预加载让页面得以快速呈现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“HTML5如何进行预加载让页面得以快速呈现”吧!...
    99+
    2024-04-02
  • html5如何通过postMessage进行跨域通信
    这篇文章主要介绍html5如何通过postMessage进行跨域通信,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!工作中遇到一个需求,场景是:h6页作为预览模块内嵌在pc页中,用户在...
    99+
    2024-04-02
  • iframe嵌套的页面无法显示如何解决
    如果iframe嵌套的页面无法显示,可能是由于以下几个原因导致的:1. 目标页面服务器设置了X-Frame-Options头。X-F...
    99+
    2023-09-21
    iframe
  • layui如何实现多iframe页面控制定时器运行
    这篇文章主要为大家展示了“layui如何实现多iframe页面控制定时器运行”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“layui如何实现多iframe页面控...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作