• Skip to main content
  • Select language
  • Skip to search
mozilla
Mozilla Developer Network
  • Sign in
    • Persona
    • GitHub
  • Web Platform
    Technologies
    • HTML
    • CSS
    • JavaScript
    • Graphics
    • APIs / DOM
    • Apps
    • MathML
    References & Guides
    • Learn the Web
    • Tutorials
    • References
    • Developer Guides
    • Accessibility
    • ...more docs
  • Mozilla Docs
    • Add-ons
    • Firefox
    • Firefox Marketplace
    • Firefox OS
    • Persona
  • Developer Tools
  • Feedback
    • Get Firefox help
    • Get web development help
    • Join the MDN community
    • Report a content problem
    • Report a bug
  •  
Add-ons
    • No translations exist for this article.
    • Add a translation
  • Edit
  • Advanced
    • History
    • Print this article
  1. MDN
  2. Mozilla
  3. Add-ons
  4. Add-on SDK
  5. High-Level APIs
  6. self
Your Search Results

    self

    In This Article
    1. Globals
      1. Properties
        1. uri
        2. id
        3. name
        4. version
        5. loadReason
        6. isPrivateBrowsingSupported
    2. data
      1. Methods
        1. data.load(name)
        2. data.url(name)

    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.

    Share:
    • Twitter
    • Facebook
    • Google+

    Document Tags and Contributors

    Tags: 
    • Add-on SDK
     Contributors to this page: Makyen, wbamberg, maybe
     Last updated by: Makyen, Mar 26, 2016, 1:53:45 PM
    See also
    1. WebExtensions
    2. Getting started
      1. Prerequisites
      2. Anatomy of a WebExtension
      3. Packaging and Installation
      4. Walkthrough
      5. Examples
    3. Guides
      1. Content scripts
      2. Porting from Google Chrome
      3. Match patterns
      4. Debugging
      5. Chrome incompatibilities
    4. JavaScript APIs
      1. alarms
      2. bookmarks
      3. browserAction
      4. contextMenus
      5. cookies
      6. downloads
      7. events
      8. extension
      9. extensionTypes
      10. i18n
      11. idle
      12. notifications
      13. pageAction
      14. runtime
      15. storage
      16. tabs
      17. webNavigation
      18. webRequest
      19. windows
    5. Manifest keys
      1. applications
      2. background
      3. browser_action
      4. content_scripts
      5. default_locale
      6. description
      7. icons
      8. manifest_version
      9. name
      10. page action
      11. permissions
      12. version
      13. web_accessible_resources
    6. Add-on SDK
    7. Getting started
      1. Installation
      2. Getting started
      3. Troubleshooting
    8. High-Level APIs
      1. addon-page
      2. base64
      3. clipboard
      4. context-menu
      5. hotkeys
      6. indexed-db
      7. l10n
      8. notifications
      9. page-mod
      10. page-worker
      11. panel
      12. passwords
      13. private-browsing
      14. querystring
      15. request
      16. selection
      17. self
      18. simple-prefs
      19. simple-storage
      20. system
      21. tabs
      22. timers
      23. ui
      24. url
      25. widget
      26. windows
    9. Low-Level APIs
      1. /loader
      2. chrome
      3. console/plain-text
      4. console/traceback
      5. content/content
      6. content/loader
      7. content/mod
      8. content/symbiont
      9. content/worker
      10. core/heritage
      11. core/namespace
      12. core/promise
      13. dev/panel
      14. event/core
      15. event/target
      16. frame/hidden-frame
      17. frame/utils
      18. fs/path
      19. io/byte-streams
      20. io/file
      21. io/text-streams
      22. lang/functional
      23. lang/type
      24. loader/cuddlefish
      25. loader/sandbox
      26. net/url
      27. net/xhr
      28. places/bookmarks
      29. places/favicon
      30. places/history
      31. platform/xpcom
      32. preferences/event-target
      33. preferences/service
      34. remote/child
      35. remote/parent
      36. stylesheet/style
      37. stylesheet/utils
      38. system/child_process
      39. system/environment
      40. system/events
      41. system/runtime
      42. system/unload
      43. system/xul-app
      44. tabs/utils
      45. test/assert
      46. test/harness
      47. test/httpd
      48. test/runner
      49. test/utils
      50. ui/button/action
      51. ui/button/toggle
      52. ui/frame
      53. ui/id
      54. ui/sidebar
      55. ui/toolbar
      56. util/array
      57. util/collection
      58. util/deprecate
      59. util/list
      60. util/match-pattern
      61. util/object
      62. util/uuid
      63. window/utils
    10. Firefox for Android
    11. Getting started
      1. Walkthrough
      2. Debugging
      3. Code snippets
    12. APIs
      1. Accounts.jsm
      2. BrowserApp
      3. HelperApps.jsm
      4. Home.jsm
      5. HomeProvider.jsm
      6. JavaAddonManager.jsm
      7. NativeWindow
      8. Notifications.jsm
      9. PageActions.jsm
      10. Prompt.jsm
      11. RuntimePermissions.jsm
      12. Snackbars.jsm
      13. Sound.jsm
      14. Tab
    13. Legacy
    14. Restartless extensions
      1. Overview
    15. Overlay extensions
      1. Overview
    16. Themes
    17. Lightweight themes
      1. Overview
    18. Complete themes
      1. Overview
    19. Publishing add-ons
    20. Guides
      1. Signing and distribution overview
      2. Submit an add-on
      3. Review policies
      4. Developer agreement
      5. Featured add-ons
      6. Contact addons.mozilla.org
    21. Community and support
    22. Channels
      1. Add-ons blog
      2. Add-on forums
      3. Stack Overflow
      4. Development newsgroup
      5. IRC Channel

    © 2005-2016 Mozilla Developer Network and individual contributors.

    Content is available under these licenses.

    • About MDN
    • Terms
    • Privacy
    • Cookies
    • Contribute to the code

    BESbswy
    BESbswy
    BESbswy
    BESbswy
    BESbswy
    BESbswy
    BESbswy
    BESbswy
    BESbswy
    BESbswy
    BESbswy
    BESbswy
    BESbswy
    BESbswy
    BESbswy
    BESbswy
    BESbswy
    BESbswy