Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未捕获类型错误:无法读取属性';根';未定义的_Javascript_Html_Fileapi - Fatal编程技术网

Javascript 未捕获类型错误:无法读取属性';根';未定义的

Javascript 未捕获类型错误:无法读取属性';根';未定义的,javascript,html,fileapi,Javascript,Html,Fileapi,我试图在HTML5Web应用程序中实现离线功能的文件api存储,但遇到了一些问题 我在附带的JS文件(我为使用文件api创建的库)中包含以下代码: 在另一个JS文件中(我的大部分工作(业务逻辑)都完成了),我有: 我遇到的问题是在initFS函数中,fs.root.getDirectory('files')…抛出一个错误:Uncaught-TypeError:无法读取未定义的属性'root' 我曾经尝试过一些文件api包装器(和),甚至尝试过编写自己的包装器,但在实现文件api方面却没有成功(每

我试图在HTML5Web应用程序中实现离线功能的文件api存储,但遇到了一些问题

我在附带的JS文件(我为使用文件api创建的库)中包含以下代码:

在另一个JS文件中(我的大部分工作(业务逻辑)都完成了),我有:

我遇到的问题是在
initFS
函数中,
fs.root.getDirectory('files')…
抛出一个错误:
Uncaught-TypeError:无法读取未定义的属性'root'

我曾经尝试过一些文件api包装器(和),甚至尝试过编写自己的包装器,但在实现文件api方面却没有成功(每个包装器都产生了相同的错误)

我曾尝试使用应用缓存,但由于我的应用程序的性质,我遇到了内存限制(空间不足)。此外,这将只在Chrome中运行


如何使我的
fs
对象初始化为适当的“文件系统”对象,以便脱机读取/写入文件?

错误是因为
fs
未定义的
未定义的
不能具有
这样的属性

initFS
被编写为期望为
fs
传递一个值

function initFS(fs) {
    fs.root.getDirectory(...);
}
但是,调用它时没有任何参数,因此
fs
不会有这样的值

function InitalizeStore() {
    initFS();

    // ...
}

如何使fs对象初始化为正确的“文件系统”对象,以便脱机读取/写入文件

您可以使用它作为
requestFileSystem()
的回调,您已经在其他地方做了

window.requestFileSystem(window.TEMPORARY, 5 * 1024 * 1024, initFS, errorHandler);
如果希望创建等待调用
InitializeStore()
,请将该行移到函数中:

function InitalizeStore() {
    window.requestFileSystem(window.TEMPORARY, 5 * 1024 * 1024, initFS, errorHandler);

    // ...
}

请看,您必须请求一个文件系统,并将init函数作为回调传递。我是在与一位同事进行橡皮回避后意识到这一错误的——在我提交问题之后。但在修改之后,我仍然遇到了相同的问题,这已证明是一个时间问题。我必须将所有init添加到“就绪”中声明my
fs
对象时发生的事件。
window.requestFileSystem(window.TEMPORARY, 5 * 1024 * 1024, initFS, errorHandler);
function InitalizeStore() {
    window.requestFileSystem(window.TEMPORARY, 5 * 1024 * 1024, initFS, errorHandler);

    // ...
}