treyhakanson
treyhakanson

Reputation: 4911

Cannot Access WebExtension APIs

I have the following manifest.json:

{
   "manifest_version": 2,
   "name": "Application Name",
   "version": "1.0",

   "description": "blah blah blah",

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

   "permissions": [
      "activeTab",
      "tabs",
      "history",
      "storage"
   ],

   "browser_action": {
      "default_icon": "icons/icon-32.png",
      "default_title": "Title",
      "default_popup": "popup/popup.html"
   },

   "content_scripts": [{
      "matches": [
         "<all_urls>"
      ],
      "js": [
         "content_scripts/script1.js",
         "content_scripts/script2.js"
      ]
   }]
}

I have access to the the storage API (browser.storage is defined) in my content scripts, but both the history and tabs APIs (browser.tabs and browser.history) are undefined. Am I missing something in the manifest to get access to these permissions?

Upvotes: 0

Views: 119

Answers (1)

Smile4ever
Smile4ever

Reputation: 3704

One of the few WebExtensions APIs that is available for content scripts is browser.storage. Most WebExtensions APIs can only be accessed when using a background script. Using message passing you can still call those APIs (what you do is basically calling a function in the background script from within the content script). Please see the example on this page: https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/runtime/sendMessage

See also Firefox WebExtention API: TypeError: browser.browserAction is undefined for a similar problem.

Upvotes: 1

Related Questions