javascript - 同时与多个选项卡通信的 Chrome 扩展程序
问题描述
我无法让我的 chrome 扩展程序同时使用多个选项卡。我的扩展的整体流程是:
后台脚本在开始时会打开一个新窗口,扩展 js 所在的位置。
executeScript
该扩展程序通过api在浏览器的活动选项卡中注入一个 js 文件- 在其回调中向同一个选项卡发送一条消息,我的 js 代码通过该消息对选项卡的 DOM 执行操作
- 活动选项卡向扩展选项卡发送消息
- 扩展更改活动选项卡的地址,再次通过
executeScript
- 后台脚本监听 tabs.onUpdate 以确定页面地址何时更改完成(状态 === '完成'),将 js 注入浏览器的活动选项卡中。
步骤 2-5 继续进行,直到满足我的扩展选项卡 UI 定义的给定标准,并且该过程停止。这很好用,但我需要利用它同时在多个选项卡中发生。
pops 的第一个想法是使用tabs.create
api 创建多个选项卡,并假设在上面的流程中简单地传递相应的选项卡 ID - 将起作用。但事实并非如此。在仅创建 2 个选项卡的最简单场景中,2 个在开始时更改地址 - 但第一个选项卡仅执行一次。该过程仅使用第二个选项卡继续。
上述流程和扩展的“基础设施”是否存在无法适应这种行为的固有问题?我错过web workers
了在后台脚本中使用 - 因为它同步收听多个标签消息吗?
任何方向将不胜感激。
解决方案
推荐阅读
- c - 如何使用 (s)printf 将地址完美地打印到 c 字符串或标准输出中?
- python - 从 Python 中的特定位置运行 exe 文件
- r - 使用 seq.Date() 获取事件发生的时间段,开始/结束日期缺少值
- javascript - Node.js,使用带有 readline.on 函数的 async/await
- mysql - JSON EXTRACT 搜索键使用 LIKE
- sql - 如何改进 LARAVEL 中的 SQL 查询?
- java - 如何正确地将对象添加到数组中?(处理3.5.4)
- python - 根据行条件python找到最大值
- elasticsearch - Elasticsearch,根据不同地理点字段的不同半径过滤文档
- python - 为什么我在 Spyder 中收到内核错误?