self

Stable

Access data that is bundled with the add-on, and add-on metadata.

Note that the self module is completely different from the global self object accessible to content scripts, which is used by a content script to communicate with the add-on code.

Globals

Properties

uri

This property represents an add-on associated unique URI string. This URI can be used for APIs which require a valid URI string, such as the passwords module.

id

This property is a printable string that is unique for each add-on. It comes from the id property set in the package.json file in the main package (i.e. the package in which you run jpm xpi). While not generally of use to add-on code directly, it can be used by internal API code to index local storage and other resources that are associated with a particular add-on.

name

This property contains the add-on's short name. It comes from the name property in the main package's package.json file.

version

This property contains the add-on's version string. It comes from the version property set in the package.json file in the main package.

loadReason

This property contains of the following strings describing the reason your add-on was loaded:

install
enable
startup
upgrade
downgrade

isPrivateBrowsingSupported

This property indicates whether or not the add-on supports private browsing. It comes from the private-browsing key in the add-on's package.json file.

data

The data object is used to access data that was bundled with the add-on. This data lives in the add-on's data/ directory, immediately below the package.json file. All files in this directory will be copied into the XPI and made available through the data object.

The Package Specification article explains the package.json file.

Methods

data.load(name)

The data.load() method returns the contents of an embedded data file, as a string. It is most useful for data that will be modified or parsed in some way, such as JSON, XML, plain text, or perhaps an HTML template. For data that can be displayed directly in a content frame, use data.url().

Parameters

name : string
The filename to be read, relative to the package's data directory. Each package that uses the self module will see its own data directory.

Returns

string : the file contents.

data.url(name)

The data.url() method returns a resource:// url that points at an embedded data file. It is most useful for data that can be displayed directly in a content frame. The url can be passed to a content frame constructor, such as the Panel:

var self = require("sdk/self");

var myPanel = require("sdk/panel").Panel({
  contentURL: self.data.url("myFile.html")
});

myPanel.show();

From Firefox 34, you can use "./myFile.html" as an alias for self.data.url("myFile.html"). So you can rewrite the above code like this:

var myPanel = require("sdk/panel").Panel({
  contentURL: "./myFile.html"
});

myPanel.show();
Parameters

name : string
The filename to be read, relative to the package's data directory. Each package that uses the self module will see its own data directory.

Returns

String : resource:// URL pointing to the given location under data.