appAPI.tabs.getActive在firefox中返回空对象

时间:2013-10-30 08:53:30

标签: crossrider

appAPI.tabs.getActive在firefox中返回空对象

appAPI.ready(function() 
{ 
    // retrieves the information for the active tab 
    appAPI.tabs.getActive(function(tabInfo) { 
        console.log( 
           'tabId: ' + tabInfo.tabId + 
           ' tabUrl: ' + tabInfo.tabUrl 
        ); 
     }); 
}); 

我在我的扩展程序中尝试了上面的函数/代码appAPI.tabs.getActive,它在Chrome中正常工作,但它不能在firefox中运行,它给我空对象{}。如果有人知道什么是问题,请尽快回复,提前谢谢

1 个答案:

答案 0 :(得分:1)

根据经验,只有在背景范围以外的范围内使用appAPI.tabs API时才会出现这种情况。 请注意,它仅在后台范围内受支持。

要在其他作用域中使用appAPI.tabs.getActive,请从作用域发送消息到后台作用域以获取tabInfo对象,然后将数据发送回原始作用域,如弹出作用域中的以下示例:

<强> popup.html

function crossriderMain($) {
  var tabInfo = null;
  appAPI.message.addListener(function(msg) {
    if (msg.type==='set-tabInfo') {
      tabInfo = msg.tabInfo;
    }
  });
  appAPI.message.toBackground({type:'get-tabInfo'});
}

<强> background.js

appAPI.ready(function() {
  appAPI.message.addListener(function(msg) {
    if (msg.type==='get-tabInfo') {
      appAPI.tabs.getActive(function(tabInfo) {
        appAPI.message.toPopup({type:'set-tabInfo', tabInfo:tabInfo});
      });
    }
  });
});