初始选项卡不会触发打开的、就绪的事件

Initial tab doesn't fire open, ready events

我正在构建一个 SDK Firefox 附加组件,它应该读取选项卡的 URL 并解析它。为此,我正在 lib/main.js

中收听 'ready' 事件
var tabs = require('sdk/tabs');
tabs.on('open', function(tab){
  tab.on('ready', function(tab){
    console.log(tab.url);
  });
});

Mozilla's documentation所述。

使用 cfx run 进行调试时,这似乎适用于新选项卡。已在 cfx run 上打开的选项卡 不会 触发 openready 事件。

这是什么原因以及如何解决?

要列出在加载插件时打开的所有选项卡,您可以使用需要 sdk/tabs

后获得的 tabs 对象
var tabs = require('sdk/tabs');
for (var tab of tabs) {
  console.log(tab.url);
}

因此您的示例中的代码可以转换为如下所示:

var tabs = require('sdk/tabs');

for (let tab of tabs) {
  processTab(tab);
}

tabs.on('open', function(tab){
  tab.on('ready', processTab);
});

function processTab(tab) {
  console.log(tab.url);
}