这个是 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页面上
可以获取tab指定吧,不然就匹配网址,消息传递的时候可以做筛选,窗口ID、标签ID、来源站点信息都可以使用啊。