在页面加载后从 background.js 获取当前活动标签

Get the current active tab from background.js after pages are already loaded

我正在开发 Firefox WebExtension。但是,我需要获得当前的活动选项卡,以及一些额外的要点。我已经成功地从内容脚本和背景脚本中获取了当前的活动选项卡,但是,当页面加载时,事件就会上升。我的问题是即使在页面加载后我也需要获取活动选项卡。例如,我在浏览器中有 2 个选项卡,我在加载它们时设法获取了它们的 URL,但是当我稍后在它们之间导航时(当它们已经加载并打开时)- 我没有得到任何信息.我已经设法使用 Alarm(在后台脚本中)解决了这个问题,它将查询当前的活动选项卡并给我所需的结果。

但是这个问题有没有更好的办法呢?我怎样才能在没有警报的情况下做到这一点?

您可以随时通过tabs.query()

从后台脚本获取活动标签
const querying = browser.tabs.query({currentWindow: true, active: true});
querying.then(logTabs, onError);

评论更新

这就是您从后台获取活动选项卡的方式。 时间由你决定。您可以收听 events 以了解何时 运行 代码,例如:

  • tabs.onActivated
  • tabs.onAttached
  • tabs.onCreated
  • tabs.onDetached
  • tabs.onHighlighted
  • tabs.onMoved
  • tabs.onRemoved
  • tabs.onReplaced
  • tabs.onUpdated
  • tabs.onZoomChange

还有一些事件可以从内容脚本触发并使用 runtime.sendMessage() 发送到后台脚本。

这完全取决于具体情况以及您希望何时触发代码。