2

ファイルを Firefox アドオンにロードするための解決策を見つけるのに 4 時間かかりました。しかし、成功しませんでした (((.

私が持っているコード:

const {TextDecoder, OS} = Cu.import("resource://gre/modules/osfile.jsm", {});
var decoder = new TextDecoder();
var promise = OS.File.read("C:\\test.txt");
promise = promise.then(function onSuccess(array) {
    alert(decoder.decode(array));
});

上記のコードを強制的に実行することは不可能です (((。何が間違っていますか?

4

1 に答える 1

0

あなたが持っているコードは、基本的に書かれたとおりに機能します。alert()ただし、これはが定義されており、ファイルを読み込もうとしたときにエラーが発生しなかったことを前提としています。ただし、alert()コード内の別の場所で定義しない限り、通常は定義されません。ブラウザ コンソール( OSX では- - 、または- - ) を見ると、問題の正確な内容が特定される可能性があります。残念ながら、あなたはその情報を質問に含めていません。CtrlShiftJCmdShiftJ

参考情報:

以下は、 のファイルを 2 回読み取り、コンソールに出力する完全な Firefox アドオン SDK 拡張機能ですB:\testFile.txt。以下に含まれるサンプル テキスト ファイルのコンソール出力は次のとおりです。

read-text-file:readTextFile: This is a text file line 1
Line 2
read-text-file:readUtf8File: This is a text file line 1
Line 2

index.js :

var {Cu} = require("chrome");
//Open the Browser Console (Used in testing/developmenti to monitor errors/console)
var utils = require('sdk/window/utils');
activeWin = utils.getMostRecentBrowserWindow();
activeWin.document.getElementById('menu_browserConsole').doCommand();
var buttons     = require('sdk/ui/button/action');
var button = buttons.ActionButton({
    id: "doAction",
    label: "Do Action",
    icon: "./myIcon.png",
    onClick: doAction
});
//Above this line is specific to the Firefox Add-on SDK
//Below this line will also work for Overlay/XUL and bootstrap/restartless add-ons
//const Cu = Components.utils; //Uncomment this line for Overlay/XUL and bootstrap add-ons
const { TextDecoder, OS } = Cu.import("resource://gre/modules/osfile.jsm", {});
function doAction(){
    var fileName = 'B:\\textFile.txt'
    //Read the file and log the contents to the console.
    readTextFile(fileName).then(console.log.bind(null,'readTextFile:'))
                          .catch(Cu.reportError);
    //Do it again, using the somewhat shorter syntax for a utf-8 encoded file
    readUtf8File(fileName).then(console.log.bind(null,'readUtf8File:'))
                          .catch(Cu.reportError);
}
function readTextFile(fileName){
    var decoder = new TextDecoder();
    return OS.File.read(fileName).then(array => decoder.decode(array));
}
function readUtf8File(fileName){
    //Using the somewhat shorter syntax for a utf-8 encoded file
    return OS.File.read(fileName, { encoding: "utf-8" }).then(text => text);
}

パッケージ.json :

{
    "title": "Read a text file",
    "name": "read-text-file",
    "version": "0.0.1",
    "description": "Reads a text file in two different ways.",
    "main": "index.js",
    "author": "Makyen",
    "engines": {
        "firefox": ">=38.0a1",
        "fennec": ">=38.0a1"
    },
    "license": "MIT",
    "keywords": [
        "jetpack"
    ]
}

textFile.txt :

This is a text file line 1
Line 2
于 2016-09-06T00:06:35.063 に答える