1

XUL アプリで HTML ファイルを開いてエディター要素にロードする方法を見つけようとしています。ただし、ドキュメントはまばらです。

現在、次のようなコンテンツ ウィンドウがあります。

<hbox id="main-frame" flex="1">
    <tabbox id="workspace-tabbox" flex="1">
        <tabs id="workspace-tabs"/>
        <tabpanels id="workspace-tabpanels" flex="1" context="clipmenu"/>
    </tabbox>
    <splitter id="main-frame-splitter"/>
    <iframe id="preview-frame" src="about:blank" flex="1"/>
</hbox>

JavaScript を使用して、 に a を追加し、<tab><tabs>aを追加<tabpanel>します<tabpanels>。次に、 を作成して<editor>に追加し、<tabpanel>編集可能にします。

次に、この関数にリンクされた [開く] ボタンがあります。

function promptFile() {
    var filepicker = Components.classes["@mozilla.org/filepicker;1"].createInstance(Components.interfaces.nsIFilePicker);
    var file;
    var choice;
    var path = null;

    filepicker.init(window, "Open", filepicker.modeOpen);
    filepicker.appendFilters(filepicker.filterHTML);
    choice = filepicker.show();

    if (choice == filepicker.returnOK) {
        file = filepicker.file.QueryInterface(Components.interfaces.nsIFile);
        path = file.path;
    }

    return path;
}

ここから、 にロードする方法がわかりません<editor>。また、「パス」を取得する正しいパスにいるかどうか、または代わりに「ファイル」オブジェクトで何かをする必要があるかどうかもわかりません。

これに関する洞察や助けをいただければ幸いです。

4

1 に答える 1

0

An<editor>は本質的にフレームであり、正しいURLをそのフレームにロードする必要があります。インスタンスnsIIOService.newFileURIからそのURLを取得するために使用できます。nsIFile

Components.utils.import("resource://gre/modules/Services.jsm");
var uri = Services.io.newFileURI(file);
var editor = document.getElementById("editor");
var loadFlags = Components.interfaces.nsIWebNavigation.LOAD_FLAGS_NONE;
editor.webNavigation.loadURI(uri.spec, loadFlags, null, null, null);
editor.makeEditable("html", true);

参考のために:nsIWebNavigation.loadURI

于 2012-07-17T09:50:53.737 に答える