• 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. Low-Level APIs
  6. event/target
Your Search Results

    event/target

    In This Article
    1. Usage
      1. Instantiation
      2. Adding listeners
      3. Removing listeners
      4. Emitting events
      5. More details
      6. Chaining
    2. EventTarget
      1. Methods
        1. initialize()
        2. on(type, listener)
        3. once(type, listener)
        4. removeListener(type, listener)
        5. off()

    Stable

    Create objects that broadcast events. Users of the object can listen to the events using the standard on() and once() functions.

    UsageEdit

    Many objects in the SDK can broadcast events. For example, a panel instance emits an show event when the panel is shown. With this module you can create your own objects that emit events.

    This module provides an exemplar EventTarget object, that implements an interface for adding and removing event listeners of a specific type. EventTarget is the base class for all objects in SDK on which events are emitted.

    Also see the tutorial on implementing event targets to get started with this API.

    Instantiation

    It's easy to create event target objects, no special arguments are required.

    const { EventTarget } = require("sdk/event/target");
    let target = EventTarget();

    For a convenience though optional options arguments may be used, in which case all the function properties with keys like: onMessage, onMyEvent... will be auto registered for associated 'message', 'myEvent' events on the created instance. All other properties of options will be ignored.

    Adding listeners

    EventTarget interface defines on method, that can be used to register event listeners on them for the given event type:

    target.on('message', function onMessage(message) {
      // Note: `this` pseudo variable is an event `target` unless
      // intentionally overridden via `.bind()`.
      console.log(message);
    });

    Sometimes event listener may care only about very first event of specific type. EventTarget interface defines convenience method for adding one shot event listeners via method once. Such listeners are called only once next time event of the specified type is emitted:

    target.once('ready', function onReady() {
      // Do the thing once ready!
    });

    Removing listeners

    EventTarget interface defines API for unregistering event listeners, via removeListener method:

    target.removeListener('message', onMessage);

    Emitting events

    EventTarget interface intentionally does not define an API for emitting events. In majority of cases party emitting events is different from party registering listeners. In order to emit events one needs to use event/core module instead:

    let { emit } = require('sdk/event/core');
    
    target.on('hi', function(person) { console.log(person + ' says hi'); });
    emit(target, 'hi', 'Mark'); // info: 'Mark says hi'

    For more details see event/core documentation.

    More details

    Listeners registered during the event propagation (by one of the listeners) won't be triggered until next emit of the matching type:

    let { emit } = require('sdk/event/core');
    
    target.on('message', function onMessage(message) {
      console.log('listener triggered');
      target.on('message', function() {
        console.log('nested listener triggered');
      });
    });
    
    emit(target, 'message'); // info: 'listener triggered'
    emit(target, 'message'); // info: 'listener triggered'
                             // info: 'nested listener triggered'

    Exceptions in the listeners can be handled via 'error' event listeners:

    target.on('boom', function() {
      throw Error('Boom!');
    });
    target.once('error', function(error) {
      console.log('caught an error: ' + error.message);
    });
    emit(target, 'boom');
    // info: caught an error: Boom!

    If there is no listener registered for error event or if it also throws exception then such exceptions are logged into a console.

    Chaining

    Emitters can also have their methods chained:

    target.on('message', handleMessage)
      .on('data', parseData)
      .on('error', handleError);

    EventTargetEdit

    EventTarget is an exemplar for creating an objects that can be used to add / remove event listeners on them. Events on these objects may be emitted via emit function exported by event/core module.

    Methods

    initialize()

    Method initializes this event source. It goes through properties of a given options and registers listeners for the ones that look like event listeners.

    on(type, listener)

    Registers an event listener that is called every time events of specified type are emitted.

    worker.on('message', function (data) {
      console.log('data received: ' + data)
    });
    Parameters

    type : String
    The type of event.

    listener : Function
    The listener function that processes the event.

    Returns

    EventTarget : Returns the EventTarget instance

    once(type, listener)

    Registers an event listener that is called only once: the next time an event of the specified type is emitted.

    Parameters

    type : String
    The type of event.

    listener : Function
    The listener function that processes the event.

    Returns

    EventTarget : Returns the EventTarget instance

    removeListener(type, listener)

    Removes an event listener for the given event type.

    Parameters

    type : String
    The type of event.

    listener : Function
    The listener function that processes the event.

    Returns

    EventTarget : Returns the EventTarget instance

    off()

    An alias for removeListener.

    Share:
    • Twitter
    • Facebook
    • Google+

    Document Tags and Contributors

     Contributors to this page: wbamberg
     Last updated by: wbamberg, Jan 15, 2016, 10:10:40 AM
    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. events
      7. extension
      8. extensionTypes
      9. i18n
      10. idle
      11. notifications
      12. pageAction
      13. runtime
      14. storage
      15. tabs
      16. webNavigation
      17. webRequest
      18. 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. Snackbars.jsm
      12. Sound.jsm
      13. 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