iframe的父子页面通信

简介: 【10月更文挑战第2天】

在 Web 开发中,iframe(内联框架)常用于在一个网页中嵌入另一个网页,实现父子页面之间的通信可以通过以下几种方式:

一、window.name 属性

  1. 父页面先将数据赋值给自身的window.name属性,然后跳转到iframe页面。
    ```html <!DOCTYPE html>








2. `iframe`页面通过读取自身的`window.name`属性获取数据。
```html
<!-- iframe 页面 -->
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>iframe 页面</title>
</head>

<body>
    <script>
        window.onload = function () {
            var parentData = window.name;
            console.log(parentData);
        }
    </script>
</body>

</html>

二、postMessage 方法

这是一种跨域通信的标准方式,适用于不同源的iframe之间通信,也可用于同源的iframe

  1. 父页面发送消息:
    ```html <!DOCTYPE html>








2. `iframe`页面接收消息并响应:
```html
<!-- iframe 页面 -->
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>iframe 页面</title>
</head>

<body>
    <script>
        window.addEventListener('message', function (event) {
            if (event.data === '父页面发送的消息') {
                // 处理消息,这里可以发送回消息给父页面
                event.source.postMessage('iframe 响应的消息', event.origin);
            }
        });
    </script>
</body>

</html>

三、利用查询参数(适用于同源页面)

  1. 父页面在跳转到iframe页面时,通过查询参数传递数据:
    ```html <!DOCTYPE html>








2. `iframe`页面从查询参数中获取数据:
```html
<!-- iframe 页面 -->
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>iframe 页面</title>
</head>

<body>
    <script>
        var searchParams = new URLSearchParams(window.location.search);
        var parentData = searchParams.get('data');
        console.log(parentData);
    </script>
</body>

</html>

以上就是几种常见的iframe父子页面通信的方式,在实际开发中可根据具体需求和场景选择合适的通信方法。

目录
相关文章
vscode 打开多个标签页
vscode 打开多个标签页
1207 0
|
JavaScript
JS检测客户端是否安装
JS检测客户端是否安装
|
缓存 JavaScript 前端开发
MSW:可用于浏览器和测试的Mock服务
在 VUE 项目开发中,大部分需求会涉及API数据交互,为了保证项目效率,前端通常需要一个 API 服务器来确保前端开发进度,这就是所谓的 Mock 服务。网络上有许多类型的 Mock 工具,使用不同的方法解决同一个问题。
1543 0
MSW:可用于浏览器和测试的Mock服务
|
10月前
|
人工智能 自然语言处理 机器人
向量化与嵌入模型:RAG系统背后的隐形英雄
传统搜索只懂字面不懂含义,向量化技术让AI真正理解语言。从日常类比到实际案例,揭秘为何向量化技术是RAG的灵魂,以及如何用最少的努力构建最聪明的AI应用。
949 10
|
机器学习/深度学习 文字识别 监控
安全监控系统:技术架构与应用解析
该系统采用模块化设计,集成了行为识别、视频监控、人脸识别、危险区域检测、异常事件检测、日志追溯及消息推送等功能,并可选配OCR识别模块。基于深度学习与开源技术栈(如TensorFlow、OpenCV),系统具备高精度、低延迟特点,支持实时分析儿童行为、监测危险区域、识别异常事件,并将结果推送给教师或家长。同时兼容主流硬件,支持本地化推理与分布式处理,确保可靠性与扩展性,为幼儿园安全管理提供全面解决方案。
660 3
|
JavaScript
iframe的父子页面通信
iframe的父子页面通信
845 6
WK
|
存储 移动开发 API
哪些功能是HTML5的新增功能
HTML5作为HTML的最新版本,引入了许多新的功能和特性,这些功能极大地丰富了网页的表现力和交互性。以下是HTML5的一些新增功能:
WK
492 2
|
JavaScript 调度
Vue3 使用 Event Bus
Vue3 使用 Event Bus
580 2
Element UI【实战范例】下拉选择 el-select 的 change 事件传入选中值+自定义参数
Element UI【实战范例】下拉选择 el-select 的 change 事件传入选中值+自定义参数
4217 1
|
JavaScript 前端开发
javascript判断对象中是否存在某个字段
javascript判断对象中是否存在某个字段