js同级弹窗实现数据传输修改

2023-09-22 09:16:00

window.postMessage 是一种用于实现跨窗口通信的 HTML5 特性。它允许在不同窗口或 iframe 之间安全地传递数据,即使这些窗口来自不同的域名。

window.postMessage 方法接受两个参数:

message:要发送的消息,可以是一个字符串或一个对象。
targetOrigin:指定接收消息的窗口的源(origin)。通常为目标窗口的域名,也可以是通配符,如 *,表示可以接收来自任何源的消息。
发送消息的窗口可以是任何 DOM 元素,如窗口、iframe 或弹窗。接收消息的窗口需要通过监听 message 事件来处理收到的消息。

以下是一个示例,演示如何使用 window.postMessage 在父级页面和子页面之间进行跨窗口通信:

在父级页面中:

// 监听message事件
window.addEventListener('message', function(event) {
    // 确保消息来自可信任的源
    if (event.origin !== 'https://child-page.com') {
        return;
    }

    // 处理接收到的消息
    console.log('父级页面收到消息:', event.data);
});

// 向子页面发送消息
var childWindow = document.getElementById('child-iframe').contentWindow;
childWindow.postMessage('Hello from parent!', 'https://child-page.com');

在子页面中(iframe 页面):

// 监听message事件
window.addEventListener('message', function(event) {
    // 确保消息来自可信任的源
    if (event.origin !== 'https://parent-page.com') {
        return;
    }

    // 处理接收到的消息
    console.log('子页面收到消息:', event.data);

    // 向父级页面回复消息
    event.source.postMessage('Hello from child!', 'https://parent-page.com');
});

在这个示例中,父级页面和子页面都通过监听 message 事件来接收消息,并使用 event.data 来访问消息内容。父级页面向子页面发送消息,子页面接收后回复了一条消息。

注意:在实际应用中,要确保安全性,你应该验证消息的来源(event.origin)以防止不受信任的源发送恶意消息。


在子页面中,你可以在不使用 window.addEventListener 的情况下向父页面发送消息,而是使用直接的 JavaScript 语句。以下是一个示例:

在子页面中 (child_page.html):

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>子页面</title>
</head>
<body>
    <!-- 子页面内容 -->

    <script>
        // 向父页面发送消息
        window.parent.postMessage('Hello from child!', 'https://parent-page.com');
    </script>
</body>
</html>

在这个示例中,子页面中的 JavaScript 代码直接在加载页面时就向父页面发送消息,而不需要在 window.addEventListener 中编写代码。

这种方式适用于一些简单的场景,其中子页面加载后立即需要向父页面发送消息。如果需要更复杂的消息传递或需要在特定事件发生时发送消息,那么使用 window.addEventListener 来监听消息事件可能更合适。

更多推荐

LeetCode 2591. 将钱分给最多的儿童

【LetMeFly】2591.将钱分给最多的儿童力扣题目链接:https://leetcode.cn/problems/distribute-money-to-maximum-children/给你一个整数money,表示你总共有的钱数(单位为美元)和另一个整数children,表示你要将钱分配给多少个儿童。你需要按照

【AI+医疗】AI在医疗影像设备工作周期中的应用探索

导读随着人工智能技术的飞速发展,越来越多的领域开始与人工智能技术深度融合,产生了一种新型的技术模式——AI+。AI+是指将人工智能技术与其他领域的技术或应用进行结合,在提高效率、精度和创新能力的同时,也为人工智能技术的发展提供了更多的应用场景和数据支持。其中,AI+医疗是人工智能技术与医疗领域的深度融合,通过结合人工智

代码随想录算法训练营第56天 | ● 583. 两个字符串的删除操作 ● 72. 编辑距离 ● 动态规划之编辑距离总结篇

文章目录前言一、583.两个字符串的删除操作二、72.编辑距离三、动态规划之编辑距离总结篇总结前言一、583.两个字符串的删除操作两种思路:1.直接动态规划,求两个字符串需要删除的最小次数2.采用子序列的和-最长公共子序列。思路一分析如下:动规五部曲,分析如下:确定dp数组(dptable)以及下标的含义dp[i][j

频频刷屏朋友圈,白酒如何越来越年轻化?来聊聊白酒企业数字化

最近,某白酒品牌频频吸引大众眼球,白酒与咖啡、巧克力等联名衍生品一经推出便掀起热潮。某商品由于太过火爆,甚至一度售罄下架。不得不说,我国拥有超大规模内需市场,消费潜力巨大。当前,创新消费场景加上数字化融合转型,成为酒企品牌开疆扩土、逆势增长的重要途径。如今越来越多的酒企开始拥抱数字化,建立涵盖白酒品系开发、酒体设计、基

如何用CRM软件系统管理企业客户

客户对企业的重要程度不言而喻。可以说,客户是企业收益的来源和可持续发展的基础,客户的转化率和保留率也与企业的发展息息相关。企业想要成功转化客户,需要经历客户跟踪、挖掘、维护等一系列过程。下面我们来说说,CRM客户管理系统如何管理企业客户?1、CRM系统能从不同渠道获取客户CRM系统可以实现客户信息获取和访问、高效转化和

Js中一些数组常用API总结

前端面试题库(面试必备)推荐:★★★★★地址:前端面试题库【国庆头像】-国庆爱国程序员头像!总有一款适合你!前言Js中数组是一个重要的数据结构,它相比于字符串有更多的方法,在一些算法题中我们经常需要将字符串转化为数组,使用数组里面的API进行操作。本篇文章总结了一些数组中常用的API,我们把它们分成两类,一类是会改变原

数据信息会有哪些风险,云数据库如何保护?

数据信息安风险是多种多样的,那么,云数据库如何规避并保护数据信息安全?今天安策带大家具体来了解数据信息会有哪些风险,云数据库将如何保护:数据泄露:不管是内部人员疏忽,还是恶意攻击、系统漏洞等等原因,数据泄露会导致敏感信息的暴露,损害其品牌的声誉和利益。数据损坏:损坏原因主要由自然灾害、人为或恶意攻击构成,从而导致无法预

容器核心技术之Namespace与Cgroup

容器是一种流行的虚拟化技术,它允许我们在同一台计算机上与其他进程在独立环境中运行进程。那么容器是如何做到这一点的呢?为此,容器是从Linux内核的一些新功能构建的,其中两个主要功能是“namespace”和“cgroup”。1.Namespace1.1Namespace简介Namespace(命名空间)技术是一种内核级

Nvme Spec 第一章节学习

@NvmeExpressBaseSpecification第一章简介1.1概述NVMExpressTM(NVMeTM)接口允许主机软件与非易失性存储器子系统通信。此接口针对企业和客户端固态驱动器进行了优化,通常作为寄存器级接口连接到PCIExpress接口。注:在开发过程中,本规范被称为企业NVMHCI。然而,在完成之

YOLOv8『小目标』检测指南

前言目前博主课题组在进行物体部件的异常检测项目,项目中需要先使用YOLOv8进行目标检测,然后进行图像切割,最后采用WinCLIP模型进行部件异常检测但是在实际操作过程中出现问题,YOLOv8模型目标检测在大目标精确度不错,但是在小目标检测中效果极差我们之前的解决方案是扩大异常部件的目标检测范围,易于检测。但是缺点是会

stable diffusion在建筑行业应用

AI建筑研究室-帆哥投稿视频-AI建筑研究室-帆哥视频分享-哔哩哔哩视频点击观看AI建筑研究室-帆哥的全部投稿视频,在这里可以查看AI建筑研究室-帆哥最新发布、最多播放和最多收藏的视频。https://space.bilibili.com/2161614/videoHD▎ChatGPT接入自研AI工具集,为设计生产赋能

热文推荐