tabs.getCurrent()结果是未定义的?

时间:2017-04-29 12:38:21

标签: javascript tabs promise firefox-webextensions

当我导航到例如amazon.com或google.com并点击浏览器图标进行浏览器操作时,我不确定为什么我无法使用getCurrent()检索有关当前标签的信息。关于我遗失的任何提示?

清单:

{
  "name": "testGetCurrentTab",
  "version":  "1.0",
  "description":  "",
  "manifest_version": 2,

  "icons": {
    "48": "icons/icon-48.png"
  },

  "permissions": [
      "tabs",
      "<all_urls>"
  ],

  "browser_action": {
      "default_icon": "icon/icon-32.png"
  },

  "background": {
      "scripts": ["background.js"]
  }      
}

背景:

function displayInfo() {

  function onGot(tabInfo) {
    console.log('Inside onGot() ...');
    console.log(tabInfo);
  }

  function onError(error) {
    console.log(`Error: ${error}`);
  }

  var gettingCurrent = browser.tabs.getCurrent();
  gettingCurrent.then(onGot, onError);
}

browser.browserAction.onClicked.addListener(displayInfo);

这是输出:

Inside onGot() ...  background.js:4:7

undefined  background.js:5:7

Firefox Dev Edition 54(64位)

https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/tabs/getCurrent

2 个答案:

答案 0 :(得分:11)

您可以在执行

时获取<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <button id="one">DOWN</button> <button id="sec">TOP</button> <button id="thi">LEFT</button> <button id="for">RIGHT</button> <br><br> <div class="box"> </div>文件中当前有效的标签
background.js

答案 1 :(得分:8)

来自MDN tabs.getCurrent()

  

获取tabs.Tab,其中包含有关运行此脚本的选项卡的信息。

     

您可以在有浏览器标签的上下文中调用此函数,例如options page。如果从后台脚本或弹出窗口调用它,它将返回undefined。

browserAction.onClicked事件返回活动标签,您不需要其他API调用。

browser.browserAction.onClicked.addListener(function(tab) {
 console.log(tab)
})

请参阅tab parameter for browserAction.onClicked listener