Re: Tab & click event registration

Vaibhav <[email protected]> Mon, 26 Apr 2010 20:50:00 -0700 (PDT)
Newsgroups gmane.comp.mozilla.devel.dom
Organization http://groups.google.com
Message-ID <cda92759-9e60-4721-b501-b2f3879549d0@x18g2000prk.googlegroups.com>
On Apr 24, 1:01 am, Jens Sorensen <[email protected]> wrote:
> I assume you have implemented at “nsIObserver“ and that the “Observe”
> method gets invoked at startup with “xpcom-startup” as the topic. This
> would be a good point to get a hold of the “nsIObserverService”
> (do_GetService(NS_OBSERVERSERVICE_CONTRACTID)) which allows you to add
> an observer which observes when a “domwindowopened” event occours.
>
> Example:
> observer = do_GetService(NS_OBSERVERSERVICE_CONTRACTID);
> observer->AddObserver(this, NS_LITERAL_STRING("domwindowopened"), PR_FALSE);
> observer->AddObserver(this, NS_LITERAL_STRING("domwindowclosed"), PR_FALSE);
>
> This will allow you to get notified when a window is being opened
> (browser, help->about, tools->options etc). You can add a onload event
> handler to the given window and when the 'onload' event comes in then
> get the document and check if its a browser window. The browser window
> always has the id of “main-window” (you can verify this by using DOM
> Inpector).
>
> Now that you have a reference to the browser window (nsiDOMWindow)
> then get the nsIDOMEventTarget interface and add the event TabXXX
> event handlers for the given window
>
> nsCOMPtr<nsIDOMEventTarget> domTargetEvent = do_QueryInterface(
> browserDOMWindow);
> domTargetEvent->AddEventListener(NS_LITERAL_STRIN(“TabOpen”, this, PR_TRUE);
>
> Since I pass in the “this” pointer then your class should implement
> then “nsIDOMEventListener” interface.
>
> Thanks,
> Jens Sorensen
>
>
>
> On Thu, Apr 22, 2010 at 11:32 PM, Vaibhav <[email protected]> wrote:
> > Hi,
>
> > I am writing Firefox extension using C++.
> > I am confused about where do I register Tab & Click events in C++.
> > After reading Mozilla's tabbed browser document, I do it in javascript
> > file.
>
> > It is as follows:
> > /////////////////////////////////////////////////////////////////////////// ////
> > function Init()
> > {
> >        var container;
> >        container = gBrowser.tabContainer;
> > netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
> >        const cid = '@MyXPCOM/TestComponent';
> >        var obj =
> > Components.classes[cid].getService(Components.interfaces.iTestComponent);
> >        container.addEventListener("TabOpen", obj, false);
> >        container.addEventListener("TabMove", obj, false);
> >        container.addEventListener("TabClose", obj, false);
> >        container.addEventListener("TabSelect", obj, false);
> >        window.addEventListener("click", obj, false);
> > }
>
> > function DeInit()
> > {
> >    // Actually I want to unregister Tab & Click events, but till
> > this
> > function gets called
> >    // component instance is no more.
> > }
>
> > window.addEventListener('load', Init, false);
> > window.addEventListener('unload', DeInit, false);
> > ///////////////////////////////////////////////////////////////
>
> > But I want to do above things in C++.
>
> > Vaibhav.
> > _______________________________________________
> > dev-tech-dom mailing list
> > [email protected]
> >https://lists.mozilla.org/listinfo/dev-tech-dom

Hello Jens,

Thank u very much for providing answer.

Vaibhav.