使用 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”,但行为相同!
如何解决这个问题?