chrome extensions插件中popue.js和background.js进行通讯manifest V3版

本文介绍了如何在Chrome扩展中实现background.js与content.js之间的通信,通过chrome.runtime.sendMessageAPI进行交互,并提供了示例代码展示监听与响应消息的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有能力的可以看官方文档:https://developer.chrome.com/docs/extensions/reference/runtime/

如果想和content.js进行通讯,请看:https://xiaoshen.blog.csdn.net/article/details/128830779

其实原理都差不多,只是用的通讯方法不一样,和background.js进行通讯用的方法是:

chrome.runtime.sendMessage(
  extensionId?: string,
  message: any,
  options?: object,
  callback?: function,
)

 首先要在background.js里面开启监听消息的方法:

  // 消息传递
  const user = {
    username: 'demo-user'
  };

  chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
    // 2. A page requested user data, respond with a copy of `user`
    console.log('这是background脚本onMessage', message);
    if (message === 'get-user-data') {
      sendResponse(user);
    } else {
      console.log('background脚本onMessage: else', message);
      sendContent(message)
    }
    sendResponse(user);
  });

  // 给content.js发送消息
  async function sendContent(tabID) {
    const response = await chrome.tabs.sendMessage(tabID, { greeting: "hello" });
    // do something with response here, not outside the function
    console.log("sendContentResponse---", response);
  }

然后在popue.js里面开启按钮的监听事件,然后发一个消息给background.js:

不过这次用的方法是:

const response = await chrome.runtime.sendMessage(tab.id); 

在popue.html里面添加一个按钮:

点击插件,然后可以看到:

 

点击一下之后,右键打开插件的检查:可以看到日志输出

然后打开百度页面的检查:可以看到backgroun.js给content.js通讯也成功了

至此说明,和background.js通讯圆满结束,哈哈哈哈哈哈

在开发 Chrome 插件时,调试 `background.js` 文件是一个常见的需求。以下是详细的解决方案代码示例。 --- ### 解决方案 #### 1. 打开开发者工具 要调试 `background.js`,需要通过 Chrome 的开发者工具来操作。以下是具体步骤: 1. **加载扩展程序**: - 打开 Chrome 浏览器,访问 `chrome://extensions/`。 - 启用“开发者模式”。 - 点击“加载已解压的扩展程序”,选择包含 `manifest.json` `background.js` 的目录。 2. **打开背景页面的开发者工具**: - 在扩展程序页面中,找到你的扩展程序。 - 点击“背景页”旁边的“服务工作者”或“后台页面”链接(根据 Manifest V3 或 V2 的不同)。 - 如果是 Manifest V3,点击“检查”以打开开发者工具。 #### 2. 设置断点 在开发者工具中,可以为 `background.js` 设置断点: - 打开“Sources”(源代码)面板。 - 在左侧找到 `background.js` 文件并展开。 - 在需要调试的代码行号上单击,设置断点。 #### 3. 触发断点 运行插件功能,触发相关逻辑。例如,如果 `background.js` 中监听了快捷键事件,按下对应的快捷键即可触发断点。 --- ### 示例代码 假设我们有一个简单的 `background.js` 文件,如下所示: ```javascript // 监听快捷键事件 chrome.commands.onCommand.addListener((command) => { if (command === "open-chrome-settings") { console.log("Opening Chrome settings..."); chrome.tabs.create({ url: "chrome://settings/" }); } }); ``` #### 调试步骤 1. 加载扩展程序后,打开背景页面的开发者工具。 2. 在“Sources”面板中找到 `background.js` 文件。 3. 在 `console.log` 或 `chrome.tabs.create` 的行号上设置断点。 4. 按下快捷键(如 `Ctrl+Shift+.`),触发断点。 5. 使用开发者工具中的“Resume Script Execution”按钮逐步调试代码。 --- ### 代码解释 1. **`chrome.commands.onCommand.addListener`**: - 此方法用于监听用户触发的快捷键命令。 - 当检测到 `open-chrome-settings` 命令时,执行相应的逻辑。 2. **设置断点**: - 在开发者工具中,断点可以帮助你暂停代码执行,查看变量值调用堆栈。 3. **调试工具的功能**: - “Step Over”:逐行执行代码。 - “Step Into”:进入函数内部。 - “Step Out”:跳出当前函数。 - “Resume Script Execution”:继续执行代码直到下一个断点。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1024小神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值