在firefox扩展名中未定义browser.tabs

时间:2019-03-06 11:53:35

标签: javascript firefox firefox-addon

这是我的manifest.json文件:

{
  "manifest_version": 2,

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

  "content_scripts": [
    {
      "matches": ["<all_urls>"],
      "js": ["assets/js/jquery-3.3.1.min.js", "blocker.js"]
    }
  ],

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

  "options_ui": {
    "page": "background-page.html",
    "browser_style": true
  }
}

和我的blocker.js文件:

function cleanPage(tabId, changeInfo, tabInfo) {
  console.log("I am in cleanPage");
}

try {
  console.log("browser : ");
  console.log(browser);
  console.log("browser.tabs : " + browser.tabs);

  browser.tabs.onUpdated.addListener(cleanPage);

} catch(err) {
  console.log("err : ", err);
}

我收到此错误:

browser.tabs : undefined blocker.js:114:3
err :  TypeError: "browser.tabs is undefined"

我的设置:
 -Mozilla Firefox 65.0.1
 -Ubuntu 18.04

由于我完全按照Mozilla Tutorial中的说明进行操作,因此我不太了解此错误。有谁知道为什么会出现此错误?

1 个答案:

答案 0 :(得分:0)

我的 blocker.js 文件位于content_scripts中。我将其移至background_scripts并成功。

只有background_scripts中的文件可以访问browser.tabs API。

我新的 manifest.json 文件:

{
  "manifest_version": 2,

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

  "content_scripts": [
    {
      "matches": ["<all_urls>"],
      "js": []
    }
  ],

  "background": {
    "scripts": ["assets/js/jquery-3.3.1.min.js", "background.js", "blocker.js"]
  },

  "options_ui": {
    "page": "background-page.html",
    "browser_style": true
  }
}