2006-11-10

nsIHTMLEditor的获取

代码大概是这样的:

        final nsIWebBrowser webBrowser = browser.getWebBrowser();
        nsIInterfaceRequestor requestor = (nsIInterfaceRequestor) webBrowser.queryInterface(nsIInterfaceRequestor.NS_IINTERFACEREQUESTOR_IID );
        final nsIEditingSession session = (nsIEditingSession)requestor.getInterface(nsIEditingSession.NS_IEDITINGSESSION_IID);
        nsIDOMWindow window = webBrowser.getContentDOMWindow();
        session.makeWindowEditable (window, null, true);
        nsIEditor editor = session.getEditorForWindow(window);
        htmlEditor = (nsIHTMLEditor) editor.queryInterface(nsIHTMLEditor.NS_IHTMLEDITOR_IID);

本来是把他加在mozEditor的createPartControl里的, 这样运行出来editor一直是null.后来想到editor的获取应该在browser加载完document之后才能进行的罢? 于是就把代码加到ProgressListener的onCompleted()里面.运行,OK.
我觉得那个session应该也是在这个里面的,不过它在前面的代码里也能正确获取.
browser的加载一直都是异步的,新建线程?以前好像也有过一次因为加载顺序的原因而导致的错误.嗯..幸亏有个onCompleted方法

--
It's Hard to Define, But I Know it When I See it…

No comments: