Using observers: Difference between revisions

From MozillaZine Knowledge Base
Jump to navigationJump to search
No edit summary
 
(content moved to mdc)
 
(18 intermediate revisions by 6 users not shown)
Line 1: Line 1:
==Observer class==
See [http://developer.mozilla.org/en/docs/nsIObserver nsIObserver] and [http://developer.mozilla.org/en/docs/nsIObserverService nsIObserverService] at [http://developer.mozilla.org MDC].
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==
[[Category:Redirects]]
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");

Latest revision as of 20:29, 23 May 2007