浏览器插件在content_script和top窗口之间进行消息通信

为什么要进行消息通信?

        content_script和top窗口之间除了DOM共享之外,window对象是不共享的。如果content_script需要获得top窗口中window对象的数据,就需要使用到通信。反之,也是相同的情况。

1、自定义监听事件(推荐)

// 广播:浏览器原生网页(top)位置进行消息广播// 发送广播: top
let customEvent = new CustomEvent('my-message-type', { details: 'this is a message!'})
window.dispatchEvent(customEvent)// 消息监听:content_script内容脚本进行监听window.addEventListener('my-message-type', (e) => {console.log(e)console.log(e?.details) // this is a message!// do something})

2、监听广播事件


// 发送广播消息:top
window.postMessage({'type': 'my-message-type', 'data': 'message!'}, '*')// 监听消息:content_script
window.addEventListener('message', (e) => {console.log('e:', e)console.log('e.data:', e?.data)console.log('e.data.type:', e?.data?.type)console.log('e.data.data:', e?.data?.data)if (e?.data?.type === 'my-message-type') {// do something}
})

不推荐使用window.postMessage进行消息广播:
来源CSDN论坛评论:https://blog.csdn.net/dongzi_yu/article/details/128441466#comments_28957465
image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/145503.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Kingbase FlySync】界面化管控平台:1.安装部署与用户创建

同步软件安装部署与用户创建 概述准备环境目标资源1.测试虚拟机下载地址包含node1,node22.KFS管控平台工具下载地址3.临时授权下载地址 实操:同步软件安装部署1.node1准备安装环境(1)增加flysync 用户并设置密码(2)调整flysync的最大文件句柄数(open fil…

《LeetCode力扣练习》代码随想录——链表(两两交换链表中的节点---Java)

《LeetCode力扣练习》代码随想录——链表(两两交换链表中的节点—Java) 刷题思路来源于 代码随想录 24. 两两交换链表中的节点 虚拟头结点 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* L…

Django 配置 Email Admin 详细指南

概要 Django 是一个高级的 Python Web 框架,它鼓励快速开发和清洁、实用的设计。当你正在开发一个 Django 项目时,监控网站的运行情况是非常必要的。Django 提供了一个功能强大的 admin 界面,但同时也可以通过配置 email admin 来获取网站的…

【问题解决】mac随航ipad 连接出现问题(设备连接超时)

给 ipad 改名退出 ipad 和 mac 的 AppleID断掉 mac 和 ipad 的 wifi重新启动 在上述步骤每执行一次后,尝试是否可以连接成功即可。 一般都是 ipad 改名的问题,改的名字不要是之前改过的名字,是一个全新名字

十大热门骨传导蓝牙耳机排行榜,精选最佳的五款骨传导蓝牙耳机

排行榜十大热门骨传导耳机,哪些才是综合实力最强的骨传导耳机? 近年来,骨传导耳机越来越受欢迎。由于骨传导耳机不需要插入耳朵,用户能够同时感知周围环境的声音,不会完全隔绝外界,增加了使用时的安全性。…

Win10远程连接服务器失败,报错:出现了内部错误

背景:本地windows10专业版电脑远程Windows虚拟机报错,但实际检查控制台发现,虚拟机状态正常,只是本地远程连接莫名其妙断开,并报错出现了内部错误: 原因:win10客户端RDP兼容性的问题 解决方法&…

使用Mysql创建数据库并添加内容

当需要在MySQL中创建一个新数据库并添加内容时,可以按照以下步骤进行操作。 步骤1:登录到MySQL 首先,使用合适的用户名和密码登录到MySQL数据库。你可以使用以下命令登录到MySQL: mysql -u用户名 -p然后会提示你输入密码&#…

基于plc的柔性制造系统供料检测单元的设计(论文+源码)

1.系统设计 本次基于plc的柔性制造系统供料检测单元的设计,其系统结构框图如图2.1所示,系统采用西门子S7-200 型号的PLC作为主控制器,并结合温度传感器,重量传感器,限位开关,变频器等器件来构成整个系统&a…

【Vue-Demo】倒计时3秒后返回首页

首页path:/ 倒计时结束后要清除计时器&#xff0c;防止内存泄漏&#xff1a; if (this.count 0) {clearInterval(this.timer); }<!-- ErrorJump.vue --> <template><h2>Error&#xff1a;找不到页面&#xff01;</h2><h4>{{ count }}S后<R…

使用Qt实现命令行解析

本文介绍使用Qt实现命令行解析。 在使用Qt开发软件时&#xff0c;有时候不需要设计界面&#xff08;使用Qt库和signal,slot机制&#xff09;&#xff0c;程序在运行时需传递一些参数以完成系统配置&#xff0c;类似在Linux系统命令行下输入命令&#xff0c;就可以执行相应的功…

pdb restore in ADG database

Effect of PITR on Dataguard Environment (Standby MRP Crashed with ORA-39873) (Doc ID 1591492.1)​编辑To Bottom In this Document Symptoms Cause Solution APPLIES TO: Oracle Database Cloud Exadata Service - Version N/A and later Oracle Database Cloud Servic…

线程池异常捕获

1.多线程任务一般就只有两种excute和sumbit, 最大的区别就是execute没有返回值&#xff0c;submit有返回值。 异常捕获方法如下 TassThreadPoolExecutor THREAD_POOL_EXECUTOR new ThreadPoolExecutor(4,// 核心线程数量20,// 最大线程数30,// 空闲线程最大存活时间TimeUnit.…

ABAP 内表 删除重复的数据

在 ABAP 中&#xff0c;如果你想删除一个内部表中的重复行&#xff0c;你可以按照以下步骤进行操作&#xff1a; 第一步&#xff1a;定义一个辅助内部表&#xff0c;用于存储不重复的行&#xff1a; DATA: lt_unique TYPE TABLE OF your_table_type.第二步&#xff1a;使用 …

CentOS 7上生成HTTPS证书

在CentOS 7上生成HTTPS证书&#xff0c;可以使用OpenSSL工具。以下是在CentOS 7上生成自签名HTTPS证书的步骤&#xff1a; 安装OpenSSL&#xff1a; sudo yum install openssl生成证书和私钥&#xff1a; openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ssl.…

go语言学习之旅之Go语言数据类型

学无止境&#xff0c;今天学习Go 语言数据类型 Go&#xff08;或Golang&#xff09;是一种静态类型语言&#xff0c;这意味着变量的数据类型必须显式声明&#xff0c;并且在运行时不能更改。以下是Go中的一些基本数据类型&#xff1a; 这里仅介绍最常用的类型 数值类型: int: …

【漏洞复现】maccms苹果cms 命令执行漏洞

漏洞描述 感谢提供更多信息。“苹果CMS” 似乎是指 “Maccms”&#xff0c;这是一款开源的内容管理系统&#xff0c;主要用于搭建视频网站。Maccms 提供了一套完整的解决方案&#xff0c;包括用户管理、视频上传、分类管理、数据统计等功能&#xff0c;使用户能够方便地创建和…

基于django电影推荐系统

基于django电影推荐系统 摘要 该Django电影推荐系统是一个简单而基础的框架&#xff0c;旨在展示系统的基本组件。系统包括两个主要模型&#xff0c;即Movie和Rating&#xff0c;用于存储电影信息和用户评分。视图层包括展示电影列表和电影详情的功能&#xff0c;使用模板进行页…

构建自定义ChatGPT,微软推出Copilot Studio

11月16日&#xff0c;微软在美国西雅图举办“Microsoft Ignite 2023”全球开发者大会。本次人工智能成为重要主题&#xff0c;微软几乎把所有产品都集成了生成式AI功能并发布了一系列全新产品。 其中&#xff0c;微软重磅推出了Copilot Studio&#xff08;预览版&#xff09;&…

新的 Reptar CPU 缺陷影响英特尔台式机和服务器系统

英特尔修复了其现代台式机、服务器、移动和嵌入式 CPU 中的一个高严重性 CPU 漏洞&#xff0c;包括最新的 Alder Lake、Raptor Lake 和 Sapphire Rapids 微架构。 攻击者可以利用该缺陷&#xff08;追踪为CVE-2023-23583并被描述为“冗余前缀问题”&#xff09;来升级权限、获…