window.requestFileSystem在PhoneGap Cordova 3中多次触发失败/事件

时间:2013-11-12 21:51:34

标签: cordova cordova-3

cordova 3.1.0-0.2.0
Droid Razr M
Android 4.1.2
Windows 7

PhoneGap / Cordova新手。从http://docs.phonegap.com/en/3.1.0/cordova_file_file.md.html#File运行其中一个文件系统演示。使用“cordova run android”编译代码并在通过USB连接的手机上运行。

问题#1:当应用程序首次启动时,我会发出两次警报(“1”),然后再没有其他情况。

问题#2:当我通过点击按钮启动代码时,我得到以下警报模式:1,2,3,3,4,6,5,7,4,6​​,5,7。其中一些基于代码流是有意义的,但大多数都是触发两次。

我怀疑问题#2是由第一次尝试中挂出的一些异步调用引起的,但无论我等待多长时间,这些事件都不会触发,直到我通过按钮启动代码。

那么,为什么requestFileSystem调用失败,即使它正在等待设备准备,为什么其他代码混合在一起呢?

任何想法都表示赞赏。

<!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>

0 个答案:

没有答案