javascript-使用Phonegap 3.3.0 for iOS访问文件

我正在尝试使用Phonegap [cordova 3.3.0]在IOS上处理文件.我阅读了如何访问文件,并在电话间隔的API文档中阅读了它们.还添加了这样的插件

  $cordova plugin add org.apache.cordova.file
    $cordova plugin ls
    [ 'org.apache.cordova.file' ]
    $cordova plugin rm org.apache.cordova.file

 $cordova plugin add org.apache.cordova.file-transfer
    $cordova plugin ls
    [ 'org.apache.cordova.file',
      'org.apache.cordova.file-transfer' ]
    $cordova plugin rm org.apache.cordova.file-transfer

在onDeviceReady()函数之后未调用函数gotFS(fileSystem).

这是我正在使用的代码:

       function onDeviceReady() {
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
}

function gotFS(fileSystem) {
    fileSystem.root.getFile("readme.txt", null, gotFileEntry, fail);
}

function gotFileEntry(fileEntry) {
    fileEntry.file(gotFile, fail);
}

function gotFile(file){
    readDataUrl(file);
    readAsText(file);
}

function readDataUrl(file) {
    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) {
    var reader = new FileReader();
    reader.onloadend = function(evt) {
        console.log("Read as text");
        console.log(evt.target.result);
    };
    reader.readAsText(file);
}

function fail(evt) {
    console.log(evt.target.error.code);
}

此代码适用于android.但是对于Ios,我正在得到ReferenceError:找不到变量:LocalFileSystem
在这一行-

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);

解决方法:

如果未定义LocalFileSystem,则几乎可以肯定意味着未加载插件的JavaScript代码.

您是否还在使用其他的Cordova API?您能告诉您是否正在从HTML页面加载cordova.js以及它是否可以正常运行吗?

在iOS上,针对此类问题的最佳调试技术之一是使用Safari连接到iPad(或模拟器),然后运行

location.reload()

从JavaSCript控制台.如果cordova.js遇到错误,则它可能会在加载File插件之前停止运行.

(FWIW,LocalFileSystem从来都不应该是一个真实的对象;它实际上是应该实现该窗口的接口.我将改用window.PERSISTENT以与File API规范兼容.也就是说,Cordova(出于向后兼容性)应该同时在window和LocalFileSystem上设置PERSISTENT和TEMPORARY符号.)

上一篇:javascript-Phonegap-确定确切的元素处于活动状态


下一篇:java-与PhoneGap的GWT集成