3

クライアントが現金登録に使用するWebアプリケーションがあります。私がする必要があるのは、レジのソフトウェアが印刷するためにそのファイルから読み取る必要があるため、ローカルファイルを作成することです。

今まで私はこのコードを使用していました:

netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath(filePath);

残念ながら、Firefoxの最新バージョンではこれが機能しなくなったため、ファイルを作成するためにアドオンが必要であると言われました。アドオンを開発しようとしましたが(成功したかどうかはわかりません)、 main.jsは次のようになります:

var FileManager =
{
Write:
    function (File, Text)
    {
        if (!File) return;
        const unicodeConverter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]
            .createInstance(Components.interfaces.nsIScriptableUnicodeConverter);

        unicodeConverter.charset = "UTF-8";

        Text = unicodeConverter.ConvertFromUnicode(Text);
        const os = Components.classes["@mozilla.org/network/file-output-stream;1"]
          .createInstance(Components.interfaces.nsIFileOutputStream);
        os.init(File, 0x02 | 0x08 | 0x20, 0700, 0);
        os.write(Text, Text.length);
        os.close();
    },

Read:
    function (File)
    {
        if (!File) return;
        var res;

        const is = Components.classes["@mozilla.org/network/file-input-stream;1"]
            .createInstance(Components.interfaces.nsIFileInputStream);
        const sis = Components.classes["@mozilla.org/scriptableinputstream;1"]
            .createInstance(Components.interfaces.nsIScriptableInputStream);
        is.init(File, 0x01, 0400, null);
        sis.init(is);

        res = sis.read(sis.available());

        is.close();

        return res;
    },
}; 

main.jsをどのように使用すればよいですか?アドオンのインストール後にどこにありますか?FileManager.Write(path、text)のようなものを使用する必要があります。

4

1 に答える 1