首页 > 解决方案 > 同时与多个选项卡通信的 Chrome 扩展程序

问题描述

我无法让我的 chrome 扩展程序同时使用多个选项卡。我的扩展的整体流程是:

后台脚本在开始时会打开一个新窗口,扩展 js 所在的位置。

  1. executeScript该扩展程序通过api在浏览器的活动选项卡中注入一个 js 文件
  2. 在其回调中向同一个选项卡发送一条消息,我的 js 代码通过该消息对选项卡的 DOM 执行操作
  3. 活动选项卡向扩展选项卡发送消息
  4. 扩展更改活动选项卡的地址,再次通过executeScript
  5. 后台脚本监听 tabs.onUpdate 以确定页面地址何时更改完成(状态 === '完成'),将 js 注入浏览器的活动选项卡中。

步骤 2-5 继续进行,直到满足我的扩展选项卡 UI 定义的给定标准,并且该过程停止。这很好用,但我需要利用它同时在多个选项卡中发生。

pops 的第一个想法是使用tabs.createapi 创建多个选项卡,并假设在上面的流程中简单地传递相应的选项卡 ID - 将起作用。但事实并非如此。在仅创建 2 个选项卡的最简单场景中,2 个在开始时更改地址 - 但第一个选项卡仅执行一次。该过程仅使用第二个选项卡继续。

上述流程和扩展的“基础设施”是否存在无法适应这种行为的固有问题?我错过web workers了在后台脚本中使用 - 因为它同步收听多个标签消息吗?

任何方向将不胜感激。

标签: javascriptgoogle-chrome-extension

解决方案


推荐阅读