window.requestFileSystem在PhoneGap Cordova 3中失败/多次触发事件
科尔多瓦3.1.0-0.2.0window.requestFileSystem在PhoneGap Cordova 3中失败/多次触发事件,cordova,cordova-3,Cordova,Cordova 3,科尔多瓦3.1.0-0.2.0 Droid Razr M 安卓4.1.2 Windows 7 PhoneGap/Cordova的新成员。正在从运行一个文件系统演示。使用“cordova run android”编译代码并在通过USB连接的手机上运行 问题#1:当应用程序第一次启动时,我会收到两次警报(“1”),然后什么都没有 问题#2:当我通过按钮onclick启动代码时,我得到以下警报模式:1、2、2、3、3、4、6、5、7、4、6、5、7。基于代码流,其中一些是有意义的,但大多数都触发了两次
Droid Razr M
安卓4.1.2
Windows 7
PhoneGap/Cordova的新成员。正在从运行一个文件系统演示。使用“cordova run android”编译代码并在通过USB连接的手机上运行 问题#1:当应用程序第一次启动时,我会收到两次警报(“1”),然后什么都没有 问题#2:当我通过按钮onclick启动代码时,我得到以下警报模式:1、2、2、3、3、4、6、5、7、4、6、5、7。基于代码流,其中一些是有意义的,但大多数都触发了两次 我怀疑问题#2是由第一次尝试挂起的一些异步调用引起的,但无论我等待多长时间,这些事件都不会触发,直到我通过按钮启动代码 那么,为什么requestFileSystem调用在等待deviceready时仍会失败,为什么其他代码会混杂在一起 任何想法都很感激
<!DOCTYPE html>
<html>
<head>
<title>FileReader Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
alert("1");
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
}
function gotFS(fileSystem) {
alert("2");
fileSystem.root.getFile("readme.txt", null, gotFileEntry, fail);
}
function gotFileEntry(fileEntry) {
alert("3");
fileEntry.file(gotFile, fail);
}
function gotFile(file) {
alert("4");
readDataUrl(file);
alert("5");
readAsText(file);
}
function readDataUrl(file) {
alert("6");
var reader = new FileReader();
reader.onloadend = function (evt) {
console.log("Read as data URL");
console.log(evt.target.result);
};
reader.readAsDataURL(file);
}
function readAsText(file) {
alert("7");
var reader = new FileReader();
reader.onloadend = function (evt) {
console.log("Read as text");
console.log(evt.target.result);
};
reader.readAsText(file);
}
function fail(error) {
alert("8");
console.log(error.code);
}
</script>
</head>
<body>
<h1>Example</h1>
<p>Read File</p>
<button onclick="onDeviceReady();">Read File</button>
</body>
</html>
文件阅读器示例
//等待加载设备API库
//
文件。添加的监听器(“deviceready”,OnDeviceraddy,false);
//设备API可用
//
函数ondevicerady(){
警报(“1”);
requestFileSystem(LocalFileSystem.PERSISTENT,0,gotFS,fail);
}
函数gotFS(文件系统){
警报(“2”);
getFile(“readme.txt”,null,gotFileEntry,fail);
}
函数gotFileEntry(fileEntry){
警报(“3”);
fileEntry.file(gotFile,fail);
}
函数gotFile(文件){
警报(“4”);
readDataUrl(文件);
警报(“5”);
readAsText(文件);
}
函数readDataUrl(文件){
警报(“6”);
var reader=new FileReader();
reader.onloadend=函数(evt){
log(“读取为数据URL”);
日志(evt.target.result);
};
reader.readAsDataURL(文件);
}
函数readAsText(文件){
警报(“7”);
var reader=new FileReader();
reader.onloadend=函数(evt){
console.log(“读取为文本”);
日志(evt.target.result);
};
reader.readAsText(文件);
}
功能失败(错误){
警报(“8”);
console.log(错误代码);
}
例子
读取文件
读取文件