window.requestFileSystem 方法是不是已弃用?

Posted

技术标签:

【中文标题】window.requestFileSystem 方法是不是已弃用?【英文标题】:Is window.requestFileSystem method is deprecated?window.requestFileSystem 方法是否已弃用? 【发布时间】:2016-10-30 12:57:50 【问题描述】:

我目前正在开发一个旧的 ios 应用程序。我对科尔多瓦没有太多想法。

我被困在一个地方,代码使用 window.requestFileSytem 。该函数的成功回调中有一些代码。

调试的时候发现没有触发成功回调。我无法在 latest cordova document 中找到有关此功能的任何信息,但在 older document 中有一些信息。

所以我担心的是window。 requestFilesystem 方法已弃用。如果是这样,那么我怎样才能在最新的科尔多瓦中实现同样的目标。

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onReqFileSystemSuccess, null);

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

查看@iammilinds 的回答我必须更正我最初的陈述:

window.requestFileSystem 方法是非标准的,不应使用。请参阅linked MDN docs。

然而,cordova 文件插件here 或here 的文档中有包含window.requestFileSystem 方法的代码示例(搜索window.requestFileSystem 可能会有所帮助,因为dcos 非常大)。

所以关于你最初的问题:恐怕你必须调试它。也许检查浏览器的控制台可能会提示您出了什么问题。或者尝试将错误处理程序添加到window.requestFileSystem 作为最后一个参数,如下所示:

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onReqFileSystemSuccess, onErrorLoadFs);

【讨论】:

【参考方案2】:

是的,它已被弃用。 到目前为止,它仅由 Chrome 实现。

这是该 API 的 Window.requestFileSystem() 的 Mozilla 页面所说的:

非标准 此功能是非标准的,不在标准轨道上。不要在面向 Web 的生产站点上使用它:它不适用于每个用户。实现之间也可能存在很大的不兼容性,并且行为可能会在未来发生变化。

对于其他几个“文件和目录”API,可以看到上述通知。但是,以下通知很重要,并且仅适用于该特定 API。

即使与文件和目录条目 API 的其余部分相比,requestFileSystem() 也特别不标准;只有 Chrome 实现了它,所有其他浏览器制造商都决定不实现它.它甚至已从 the proposed specification 中删除。请勿使用此方法!


正确用法如本文所述:How to use window.requestFileSystem of FileSystem API?

window.requestFileSystem = window.requestFileSystem ||  // Chrome
                           window.webkitRequestFileSystem;  // Others

【讨论】:

问题不在于浏览器 API,而在于使用相同签名的 Cordova 插件文件 API(并且是在实现 html 5 浏览器 API 之前编写的)。

以上是关于window.requestFileSystem 方法是不是已弃用?的主要内容,如果未能解决你的问题,请参考以下文章

requestFileSystem 永远不会在 iOS 上返回 Cordova 3.4

File System 定额(配额查询)

使用PhoneGap创建文件

Cordova getDirectory 返回错误代码

PhoneGap 检查文件是不是存在

Filetransfer.download 在某些手机中无法正常工作