Using observers: Difference between revisions

From MozillaZine Knowledge Base
Jump to navigationJump to search
No edit summary
(No difference)

Revision as of 16:45, 25 October 2004

Observer class

function myObserver()
{
  this.register();
}
myObserver.prototype = {
  observe: function(subject, topic, data) {
     // Do your stuff here.
  },
  register: function() {
    var observerService = Components.classes["@mozilla.org/observer-service;1"]
                          .getService(Components.interfaces.nsIObserverService);
    observerService.addObserver(this, "myTopicID", false);
  },
  unregister: function() {
    var observerService = Components.classes["@mozilla.org/observer-service;1"]
                            .getService(Components.interfaces.nsIObserverService);
    observerService.removeObserver(this, "myTopicID");
  }
}

Instantiate & Register

Do the following in your init function (probably an onload handler) for each window:

var observer = new myObserver();
observer.register();

To do things cleanly, you should also unregister your observer when the window is closed.

Notify all observers

 Components.classes["@mozilla.org/observer-service;1"]
          .getService(Components.interfaces.nsIObserverService)
          .notifyObservers(null, "myTopicID", "someAdditionalInformationPassedAs'Data'Parameter");