"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.