1

我使用以下代码初始化 Class ReadConfig

var myReadConfig = new ReadConfig();

这工作正常并且alert("2")出现。

之后,我运行window.requestFileSystem(...)调用 Method的语句gotFSReader。但我从来没有看到alert("3");结果。

我应该如何运行这个gotFSReader方法 window.requestFileSystem(...)?如果我在课堂之外运行它,它完全可以工作......

我的课:

  var ReadConfig = function(){
        var path = "Zugangsdaten.txt";
        window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFSReader, failReader);
        alert("2");

        var gotFSReader = function(fileSystem) {
            alert("3");
            fileSystem.root.getFile(path, null, gotFileEntryReader, failReader);

        }

        var gotFileEntryReader = function(fileEntry) {
            fileEntry.file(gotFileReader, failReader);
            alert("4");
        }

        var gotFileReader = function(file){
            readAsText(file);
        }

        var readAsText = function(file) {
            var reader = new FileReader();
            reader.onloadend = function(evt) {
                console.log("Read as text");
                handleLocalPasswort(evt.target.result);
            };
            reader.readAsText(file);
        }

        var failReader = function(evt) {
            console.log(evt.target.error.code);
        }

        var handleLocalPasswort = function(fileStr){
            if(fileStr=="" || fileStr == null){
                return;
            }

            var arrayItems = fileStr.split(";");
            document.getElementById('tb_benutzer').value = arrayItems[0];
            document.getElementById('tb_password').value = arrayItems[1];
            document.getElementById('tb_knr').value = arrayItems[2];
            checkLogin();

        }
    }
4

1 回答 1

1

您的代码结构不正确。在将值传递给该函数之前您不会初始化该变量(“gotFSReader”) 。因此,您传递的是undefined,而不是对该函数的引用。

window.requestFileSystem()调用移至该初始化之后,或使用函数声明语句声明您的函数:

    function gotFSReader(fileSystem) {
        alert("3");
        fileSystem.root.getFile(path, null, gotFileEntryReader, failReader);
    }

如果你这样做,那么它会起作用,因为函数声明语句总是被视为出现在包含函数的开头。

变量声明也被提升,但有一个区别:只有语句的实际声明部分var被视为出现在函数的开头。初始化是在函数中var实际出现的地方完成的。因此,在您的代码中,名为“gotFSReader”的变量在您调用时声明requestFileSystem(),但尚未初始化。

于 2013-09-04T16:48:02.170 回答