phonegap 2.9.0 を使用し、このコールバックを使用してファイルを読み取ります。
fBrowse.params.on_file_select = function(file){ // file: FileEntry
try{
var reader = new FileReader();
jsIQ.msg('loading game!..');
reader.onload = function(evt) {
// success
var game = null;
// remove garbage from string
jsIQ.msg('loading game!3..' + arguments.length);
jsIQ.msg('loading game!3/2: ' + evt.target.result);
//jsIQ.msg('data: ' + evt.target.result, 2);
var s = $.trim(B64.decode(evt.target.result));
jsIQ.msg('loading game!4..');
s = s.substr(0, s.indexOf('}')+ 1);
jsIQ.msg('loading game!5..');
game = JSON.parse( s );
if (game != null) {
// success!
$('#fBrowse').hide();
jsIQ.msg('Load game success', 2);
jsIQ.triggerEvent('heart_game_loaded', {data: game});
}
};
reader.onerror = function(){
alert('error reading file');
};
jsIQ.msg('loading game!2..');
file.file(function(f){
reader.readAsText(f);
}, function(){
alert('Error opening file');
});
} catch (e){
jsIQ.msg('loadgame err: ' + e.message, 2);
alert('Внутренняя ошибка');
}
//return true;
};
そして、このログファイルの内容が表示されます:
...
[-] 17:1:26.257 ゲーム ファイルの読み込み: /mnt/sdcard/heartofice/heartofice2.savegame
[-] 17:1:26.260 ゲームをロード中!..
[-] 17:1:26.262 ゲームをロード中!2..
[-] 17:1:26.270 ゲームをロード中!3..1
これは、次の行を意味します
evt.target.result
予告なしにエラーで落ちています!サクセスリードコールバックに「evt」が渡されたのですが、使えませんか??
これは、実際の Android デバイス (4.0.3) で発生します。
onload コールバックから「reader.result」を使用しようとしましたが、同じ動作になりました!
これを解決するには?