joe ertaba wrote:
> ok!
> My code is:
>
> //register Observer
> window.addEventListener("load", MyObserver, false);
> function MyObserver(){
> var observerService = Components.classes["@mozilla.org/observer-service;1"]
> .getService(Components.interfaces.nsIObserverService);
Don't do that here, but outside the observer; because it will 'run' for
all loads!
> // problem1: observer registered before or not ??
> observerService.addObserver(ObserverFunction, "my-topic", false);
> //i dont add anything to remove observer when window going to close
> }
You better remove the observer when the window closes, or prepare
yourself for a nice leak ;)
> var ObserverFunction= {
> observe: function (subject, topic, state) {
> .....
> }
> }
>
>
> i have to problems:
>
> 1. how can i find that observer is registered before or not ?
Have you looked at enumerateObservers in nsIObserverService.idl already?
Another example is:
http://lxr.mozilla.org/seamonkey/source/browser/components/places/content/treeView.js#825
> 2. when i register observer only when first window opens every thing
> is ok, when i open some other windows still every thing is ok and observer
> works perfectly, but when i close first window while other windows are
> still
> open the observer doesn't work anymore ?!
There is a hidden window which you can use, or better use a (JavaScript)
component to store your global vars and observers, which makes listening
for opening and closing of (browser) windows also a lot easier.
--
Michael Vincent van Rantwijk
- MultiZilla Project Team Lead
- XUL Boot Camp Staff member (ActiveState Training Partner)
- iPhone Application Developer
_______________________________________________
Project_owners mailing list
[email protected]
https://www.mozdev.org/mailman/listinfo/project_owners