Re: DOMContentLoaded event from C++

YuLo <[email protected]>
Newsgroups gmane.comp.mozilla.devel.xpfe
Message-ID <[email protected]>
вторник, 17 мая 2011 г., 19:44:25 UTC+4 пользователь Martin  Lutken написал:
> Hi Neil
> 
> 
> I'll try your way too. Again Thanks a lot :)
> Also found a way myself which seems to work:
> 
> I found the solution. Just need to get the Parent windows of the one I
> wa using. Except if you want the "unload" event which seems to only
> work for the window I was first using. Here goes the complete updated
> code for those who might have had the same troubles as I.
> Thanks again to Neil for his great help.
> 
> void CSpecialThing::getBrowserQuestionForForum()
> {
>     nsString wsHrefXul      = NS_LITERAL_STRING( "chrome://xulcrawler/
> content/main.xul" );
>     nsString wsIDBrowser    = NS_LITERAL_STRING( "mybrowser1" );
> 
>     // --- A lot of variables ---
>     nsresult rv;
>     nsCOMPtr<nsIDOMWindowInternal>      pWinInt(0);
>     nsCOMPtr<nsISimpleEnumerator>       pWinEnumerator;
>     nsCOMPtr<nsIDOMLocation>            pDOMLocation;
>     nsCOMPtr<nsIDOMWindowCollection>    pDOMWindowCollection;
>     nsCOMPtr<nsIDOMWindow>              pDomWin;
>     nsCOMPtr<nsIDOMWindow>              pDomWinBrowser;
>     nsCOMPtr<nsIDOMDocument>            pDomDoc;
> 
> 
>     // -----------------------------
>     // --- Get DomWindowInternal ---
>     // -----------------------------
> 
>     nsCOMPtr<nsIWindowMediator>
> pWindowMediator(do_GetService(NS_WINDOWMEDIATOR_CONTRACTID));
> 
>     nsString sWindowType( NS_LITERAL_STRING("") );
>     rv = pWindowMediator->GetEnumerator( sWindowType.get(),
> getter_AddRefs(pWinEnumerator));
> 
> 
>     PRBool bHasMoreElements;
>     rv = pWinEnumerator->HasMoreElements( &bHasMoreElements );
> 
>     while ( bHasMoreElements ) {
>         nsCOMPtr<nsISupports> pSupportsWin;
>         rv = pWinEnumerator->GetNext( getter_AddRefs(pSupportsWin) );
>         nsCOMPtr<nsIDOMWindowInternal>
> pWinInternal(do_QueryInterface(pSupportsWin));
> 
>         rv = pWinInternal-
> >GetLocation( getter_AddRefs(pDOMLocation) );
> 
>         nsString wsHrefTest;
>         rv = pDOMLocation->GetHref( wsHrefTest );
> 
>         // See if we have the correct (XUL) URI
>         if ( wsHrefXul == wsHrefTest  ) pWinInt = pWinInternal;
> 
>         rv = pWinEnumerator->HasMoreElements( &bHasMoreElements );
>     }
> 
>     // --- Get the "mybrowser1" element ---
>     pWinInt->GetFrames( getter_AddRefs(pDOMWindowCollection) );
>     pDOMWindowCollection->NamedItem( wsIDBrowser,
> getter_AddRefs(pDomWin) );
> 
>     pDomWin->GetParent( getter_AddRefs(pDomWinBrowser) );
> 
>     // --- Add events ---
>     nsCOMPtr<nsIDOMEventTarget>
> pDomEventTargetBrowserWin(do_QueryInterface(pDomWin));
>     nsCOMPtr<nsIDOMEventTarget>
> pDomEventTargetBrowser(do_QueryInterface(pDomWinBrowser));
>     pDomEventTargetBrowser-
> >AddEventListener(NS_LITERAL_STRING("DOMContentLoaded"), this,
> PR_FALSE);
>     pDomEventTargetBrowser-
> >AddEventListener(NS_LITERAL_STRING("resize"), this, PR_FALSE);
>     pDomEventTargetBrowserWin-
> >AddEventListener(NS_LITERAL_STRING("unload"), this, PR_FALSE);
> 
>     // ---------------------------------------------------------------
>     // --- Bonus example on how to get the current URI of the page ---
>     // ---------------------------------------------------------------
>     pDomWin->GetDocument( getter_AddRefs(pDomDoc) );
>     nsCOMPtr<nsIDOMDocumentView>
> pDomDocumentView(do_QueryInterface(pDomDoc));
>     nsCOMPtr<nsIDOMAbstractView> domAbstractView =
> getDefaultView(pDomDocumentView);
>     nsCOMPtr<nsIWebNavigation>
> webNavigation(do_GetInterface(domAbstractView));
>     printf("webNavigation uri: %s\n",
> getCurrentURI(webNavigation).c_str() );
> }

Hi, Martin. 
A question for nubie. What function will be fired on event. The second parameter for "AddEventListener" is "this". It is the pointer to class, not function.
_______________________________________________
dev-tech-xul mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-xul
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.