"Mark Hammond" <[EMAIL PROTECTED]> wrote in message
[EMAIL PROTECTED]">news:[EMAIL PROTECTED]...
> Michael A. Borisov wrote:
> > Hello everybody,
> >
> > Can anybody help me with DocumentObserver please? I've created a child
of
> > nsIDocumentObserver than registered it with the nsIDocument::AddObserver
> > method. I use BeginLoad and EndLoad methods to determin the start and
end of
> > document loading. But sometimes EndLoad isn't invoked (for some sites).
Is
> > it bug or feature? And what is the right way to determin the document
> > loading end?
>
> You probably want nsIWebProgress.  Here is code I used to hook document
> load.
>
> // hook a web progress listener so we know when messages have
> // finished rendering.
> var interfaceRequestor =
>      document.getElementById('messagepane').docShell.QueryInterface
>     (Components.interfaces.nsIInterfaceRequestor);
> var webProgress =
>     interfaceRequestor.getInterface(
>        Components.interfaces.nsIWebProgress);
> msgWindowWebProgressListener = new nsMsgWindowWebProgressListener();
> webProgress.addProgressListener(msgWindowWebProgressListener,
>               Components.interfaces.nsIWebProgress.NOTIFY_STATE_WINDOW);
>
> And the implementation:
>
> function nsMsgWindowWebProgressListener()
> {
> }
> nsMsgWindowWebProgressListener.prototype =
> {
>    QueryInterface : function(aIID) {
>      if (aIID.equals(Components.interfaces.nsIWebProgressListener) ||
>          aIID.equals(Components.interfaces.nsISupportsWeakReference))
>        return this;
>     throw Components.results.NS_NOINTERFACE;
>   },
>    onStateChange : function(aWebProgress, aRequest, aStateFlags, aStatus)
{
>      if ((aStateFlags & ListenerState_Finished) == ListenerState_Finished)
{
> ...
> }
> }
>
> HTH,
>
> Mark.
>

Thank you. I feel it will work. But document.getElementById('messagepane')
in my Mozilla returns null. How I can get docShell?

Thank you again,
Michael.



Reply via email to