|
|
(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