1

科尔多瓦 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:当应用程序第一次启动时,我得到了两次 alert("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>
4

0 回答 0