当前位置: 首页 > 知识库问答 >
问题:

chrome - Chrome 插件中,两个页面的 content.js 是否都会收到 popup.js 发送的信息?

陶和歌
2024-05-31

这个是 popup.js,发送信息到 content.js。假设用户同时打开了2个浏览器页面,都使用这个插件。问2个插件的contentjs都会收到这个信息吗?

 chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {    chrome.tabs.sendMessage(tabs[0].id, {      type: "cn_start",      data: { list },    })  })

contentjs 监听信息

chrome.runtime.onMessage.addListener(async function (  message,  sender,  sendResponse) {  const { type, data } = message   if (type === "cn_start") {      console.log("cn_start")      chrome.runtime.sendMessage({        type: "bg_start",        data,      })    }}
chrome.runtime.sendMessage({  type: "bg_start",  data,})

这样发送信息,2个插件都会收到吧?

我测试的结果是 2 个插件都会收到来自其中一个的 content.js 发送过来的信息。

说一下我的业务场景。我再插件popup页面有个开始按钮,用户点击开始,我需要contentjs执行逻辑抓取页面上的内容,并发送信息通知,显示到popup页面上

共有2个答案

贾越
2024-05-31

目前通过我的测试。
runtime.sendMessage 是给所有的。
tabs.sendMessage(tabId) 是给指定的tab。contentjs不能直接使用tabs.sendMessage.
需要通过background转发一下。再bgjs里面使用tabs.sendMessage.
具体流程是popupjs-->contentjs-->backgroundjs-->contentjs-->popupjs
这样就区分出来了。我感觉好麻烦啊。哪里错了吗?

龚弘业
2024-05-31

可以获取tab指定吧,不然就匹配网址,消息传递的时候可以做筛选,窗口ID、标签ID、来源站点信息都可以使用啊。

 类似资料:
  • 这是一款用于谷歌Chrome浏览器使的Alexa工具条,它可以显示Google PR和Alexa排名,并提供快速查询Backlinks link, Whois link和域名查询的功能。它非常简单,速度快,不会影响网页的打开速度。 Alexa的浏览统计是根据用户安装Alexa工具条(Alexa Toolbar)的信息反馈及参考IP来源的区域分布作基数综合统计来排名。如果浏览器中嵌入了Alexa工具

  • 插件是基于 HTML、JavaScript 和 CSS 技术之上,并以此自义定浏览体验的小型程序。它加强了 Chrome 的功能和行为更好地满足个人偏好和需求。

  • chrome插件开发怎么做热更新? 每次都要build一下后,插件才能更新,太不方便了,有什么办法解决?

  • Bookmark Manager Bookmark Manager 是 Google 官方出品的书签管理器,好看又实用。 Chrome Bookmark Manager GitHub 相关 Octotree Octotree 是一个 GitHub 增强扩展,提供 GitHub 项目的树形视图,在线预览一个层级复杂的项目的文件结构很方便。 Octotree ZenHub ZenHub 为 GitHu

  • 问题内容: 由于某种原因,我无法将字符“ 3”写入页面上的输入元素。 这段代码: 导致在登录输入中写入“ 1245” …有人可以帮忙吗?我使用python 2.7,最新的chrome和最新的chromedriver 编辑: 也不管用。 -字符串中仅缺少“ 3” … 起作用的是 正如安德森(Andersson)在下文中建议的那样,但这不是解决方案。 我在Google搜索框中进行了尝试,并且遇到了相同

  • 疑惑:同一个单词不同位置,上面那个点击不会出现翻译,下面就可以。 问:这是什么情况,可以修复吗?