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父子页面通信的方式,在实际开发中可根据具体需求和场景选择合适的通信方法。

目录
相关文章
|
JavaScript
Vue中 使用 iframe 嵌入本地 HTML 页面 并 相互通信
Vue中 使用 iframe 嵌入本地 HTML 页面 并 相互通信
1778 0
Vue中 使用 iframe 嵌入本地 HTML 页面 并 相互通信
|
2月前
|
JavaScript
iframe的父子页面通信
iframe的父子页面通信
101 6
|
JavaScript 定位技术
vue父页面给iframe子页面传值
vue父页面给iframe子页面传值
157 0
|
JavaScript
vue使用iframe 子页面调用父页面的方法
vue使用iframe 子页面调用父页面的方法
136 0
layer 弹出框(iframe层)父子页面传值
layer 弹出框(iframe层)父子页面传值
120 0
|
JavaScript
vue组件与iframe通信,防止多次触发messag事件
vue组件与iframe通信,防止多次触发messag事件
326 0
|
前端开发 安全 算法
Iframe通信指南🧭
Iframe通信指南🧭
704 0
Iframe通信指南🧭
|
存储 JavaScript
Vue父子组件通信(父级向子级传递数据、子级向父级传递数据、Vue父子组件存储到data数据的访问)
Vue父子组件通信(父级向子级传递数据、子级向父级传递数据、Vue父子组件存储到data数据的访问)
243 0
Vue父子组件通信(父级向子级传递数据、子级向父级传递数据、Vue父子组件存储到data数据的访问)