初始选项卡不会触发打开的准备事件

时间:2015-05-08 18:22:37

标签: javascript firefox-addon firefox-addon-sdk firefox-addon-restartless

我构建了一个SDK Firefox附加组件,它应该读取标签的URL并对其进行解析。为此,我正在'ready'收听lib/main.js事件,

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个事件。

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

1 个答案:

答案 0 :(得分:2)

要列出加载插件时打开的所有标签,您只需使用tabs后需要的sdk/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);
}