Tomasz Pyra wrote:
How to determine is frames page loaded?

Now I am receiving OnStateChange, but I think it's send too fast (maybe when only frameset is loaded?).
I have to wait for build DOM tree for whole page (all frames, subframes, subsubframes etc).

You just have to check in OnStateChange, whether the nsIDOMWindow that finished loading is the top nsIDOMWindow!
I'm using this code, based on some code I found somewhere (error handling excluded):


if ((progressStateFlags & STATE_STOP) &&
        (progressStateFlags & STATE_IS_DOCUMENT)) {
        // Given these flags, an nsIDOMWindow finished loading

        nsCOMPtr<nsIDOMWindow> domWindow;
        progress->GetDOMWindow(getter_AddRefs(domWindow));
        nsCOMPtr<nsIDOMDocument> domDoc;
        domWindow->GetDocument(getter_AddRefs(domDoc));

        nsCOMPtr<nsIDOMWindow> domWindow;
        nsCOMPtr<nsIDOMWindow> topDomWindow;
        aWebProgress->GetDOMWindow(getter_AddRefs(domWindow));
        domWindow->GetTop(getter_AddRefs(topDomWindow));

        PRBool isSubFrameLoad = PR_FALSE;
        if (domWindow != topDomWindow)
                isSubFrameLoad = PR_TRUE;

        if (!isSubFrameLoad) {
                // Do what you want with the top dom window
        }
}
_______________________________________________
mozilla-embedding mailing list
[email protected]
http://mail.mozilla.org/listinfo/mozilla-embedding

Reply via email to