filePluginIsReady event is never fired in chrome when using cordova-plugin-file

我怕爱的太早我们不能终老 提交于 2019-12-10 18:37:10

问题


I am now developing a cordova app whitch platform is browser(Chrome).

I failed when using the cordova-plugin-file to read a file.

According to the document of cordova-plugin-file : Chrome quirks, It said that:

Chrome filesystem is not immediately ready after device ready event. As a workaround you can subscribe to filePluginIsReady event....You can use window.isFilePluginReadyRaised function to check whether event was already raised.

I wrote my code like this :

document.addEventListener('deviceready', dataRead, false);
function dataRead() {
  window.addEventListener('filePluginIsReady', readyToRead, false);
  console.log(window.isFilePluginReadyRaised());
}

function readyToRead(){
  window.initPersistentFileSystem(10*1024*1024, function() {
    var fs = cordova.file.applicationDirectory;
    console.log(fs);
    window.resolveLocalFileSystemURL(cordova.file.applicationDirectory + "www/1111.csv", gotFile, fail);
  },function (e) {
    console.log(e);
  });
}

function fail(e) {
  console.log("FileSystem Error");
  console.dir(e);
}

function gotFile(fileEntry) {
  fileEntry.file(function(file) {
    var reader = new FileReader();

    reader.onloadend = function(e) {
      console.log("Text is: "+this.result);
    }
    reader.readAsText(file);
  });
}

It failed to read the file, and the message in console likes this:

adding proxy for File ------------------cordova.js:942

Persistent fs quota granted ---------Preparing.js:170

false --------------------------------------app.js:4 (value of window.isFilePluginReadyRaised())

It seems that filePluginIsReady event didn't fired! WHY?

Besides, if I write my code under the deviceready event directly. It will also fail with error message below:

code: 5

message: "A URI supplied to the API was malformed, or the resulting Data URL has exceeded the URL length limitations for Data URLs."

name: "EncodingError"

Can any one point out why or show me a right example?

Any help is appreciated.


回答1:


one thing why this could have happened is that probably the time you attached to the filePluginIsReady the event was already fired. Try to subscribe to the event in the appStart.js or the first file in your app. It worked for me



来源:https://stackoverflow.com/questions/34328734/filepluginisready-event-is-never-fired-in-chrome-when-using-cordova-plugin-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!