File API を使った下記のようなJavascriptのソースコードを作りました。読み込み関数のgotFS_read(fname)で読み取ったテキストデータを関数の戻り値として受けたいのですが、うまくいきません。何か良い方法はないでしょうか?


//読み込み
var res = gotFS_read('textfile');
$('#return').innerText(res);

// ファイル読込処理
function gotFS_read(fname) {
this.text = '';
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, read, fail);
function read(fileSystem){
fileSystem.root.getFile(fname, {}, function(fileEntry) {
fileEntry.file(function(file) {
var reader = new FileReader();
reader.onloadend = function(evt) {
// ここに読み込み完了後の処理を書く
console.log(evt.target.result);
this.text = evt.target.result;
console.log(this.text);
$("#textarea").val(this.text);
alert("正常にテキストを読み込みました。");
return this.text;
};
reader.readAsText(file, "utf-8");
}, fail)
}, fail);
}
}

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/11/01 13:24:23
  • 終了:2012/11/08 13:25:03
id:yashi100

グローバル変数textでも試してみたのですが、resとして戻り値がなく、undefindとなってしまい、this.textでも試してみたといった感じです。

ちなみに訳あって、phonegap cordova1.5で試しています。

回答(0件)

回答はまだありません

  • id:Cherenkov
    質問文のコードはcordovaですか?
    http://docs.phonegap.com/en/1.7.0/cordova_file_file.md.html

    グローバルなtext変数を参照するために、this.text とするのはよくないと思います。
    thisは文脈によって変化するので、単にtextとかwindow.textにするとどうでしょうか。
    (そこが不具合の原因かはわかりませんが)。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません