what if you register the component just once that way: var uriLoader = Components.classes["@mozilla.org/uriloader;1"].getService(Components.interfaces.nsIURILoader); var contentListener = Components.classes["@your-component-id;1"]. createInstance(Components.interfaces.nsIURIContentListener); uriLoader.registerContentListener(contentListener);
fi wrote: > On 21 Feb., 16:10, Boris Zbarsky <[EMAIL PROTECTED]> wrote: >> fi wrote: >> >> In nsIURIContentListener::DoContent, the channel's loadgroup's notifications >> callbacks should be the same as the window context passed to >> nsIContentHandler.... It's a little roundabout, but there it is. >> >> -Boris > > Please bear with me! The nsIURIContentListener is not invoked. > > I created a component, implementing the following interfaces: > > nsISupports > nsISupportsWeakReference > nsIClassInfo > nsIURIContentListener > > I don't know why I have to implement nsIClassInfo, but QueryInterface > throws an exception, if I do not. No example I found on the web > implements nsIClassInfo. Here I have my first question: how do I set > the flages? > > getHelperForLanguage and getInterfaces are called later. > > As a first attempt I had my listener registered in the command-line > handler of my XULRunner application, before the first call to > openWindow. Nothing happened. No method of nsIContentListener was > invoked. > > Then I had my listener registered in an iframe of my first page (in > the onLoad event) using the following code, attributed to boris and > found here: > > http://forums.mozillazine.org/viewtopic.php?t=501254&sid=a2f27a7ca70ecb78ef834d80ec86286e > > var wnd = > window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) > .getInterface(Components.interfaces.nsIWebNavigation) > .QueryInterface(Components.interfaces.nsIDocShell) > > .QueryInterface(Components.interfaces.nsIInterfaceRequestor) > .getInterface(Components.interfaces.nsIURIContentListener); > wnd.parentContentListener = mylistener; > > This improved things, since now onStartURIOpen is called. If I return > true, the load is aborted. However, if I return false, no other > function of my ContentListener is invoked, but a new window is opened > right on top of the first one, displaying the following content > > XML Parsing Error: undefined entity > Location: chrome://mozapps/content/downloads/unknownContentType.xul > Line Number 28, Column 18: <description>&intro.label;</description> > -----------------^ > > However, this is not part of the response. > > I checked a lot of examples on the web, but they don't give me any > clue. What did I miss now? > > And do I have to register my listener on any frame, as the code above > indicates? I thougt that is enough to register is once and that it > will be invoked as needed. > > - Andreas > _______________________________________________ dev-tech-xpcom mailing list [email protected] https://lists.mozilla.org/listinfo/dev-tech-xpcom
