Firefox 中的文件和目录条目 API 支持

最初的文件系统 API 是为了让浏览器实现对访问用户存储设备上的沙盒虚拟文件系统的支持而创建的。规范标准化工作在 2012 年就已停止,但到那时,Google Chrome 已经包含了自己的 API 实现。随着时间的推移,许多流行的网站和 Web 应用程序开始使用它,通常没有提供任何回退到标准 API 的方法,甚至没有在使用它之前检查 API 是否可用。Mozilla 则选择实现其他 API,这些 API 可以用来解决许多相同的问题,例如 IndexedDB; 有关更多见解,请参阅博文 为什么 Firefox 中没有文件系统 API?

这导致许多流行的网站在除 Chrome 之外的其他浏览器上无法正常工作。因此,有人尝试创建一个规范,提供 Google API 的功能,并能达成共识。结果是 文件和目录条目 API。Chrome 提供的 API 的这个子集尚未完全规范;但是,出于 Web 兼容性原因,已决定在 Firefox 中实现 API 的一个子集;这一功能是在 Firefox 50 中引入的。

本文介绍了 Firefox 中的文件和目录条目 API 实现与其他实现或规范的差异。

Chrome 对规范的偏差

最大的兼容性问题仍然是 Chrome 仍在使用 API 中许多接口的旧名称,因为它们实现了一个相关但不同的规范

规范中的名称 Google Chrome 中的名称
FileSystemDirectoryEntry DirectoryEntry
FileSystemDirectoryEntrySync DirectoryEntrySync
FileSystemDirectoryReader DirectoryReader
FileSystemDirectoryReaderSync DirectoryReaderSync
FileSystemEntry Entry
FileSystemEntrySync EntrySync
FileSystemFileEntry FileEntry
FileSystemFileEntrySync FileEntrySync

请确保在您的代码中考虑这种情况,允许使用这两种名称。希望 Chrome 很快会更新以使用较新的名称!

为了确保您的代码在 Chrome 和其他浏览器中都能正常工作,您可以包含类似以下内容的代码

js
const FileSystemDirectoryEntry =
  window.FileSystemDirectoryEntry || window.DirectoryEntry;
const FileSystemEntry = window.FileSystemEntry || window.Entry;

Firefox 中的限制

接下来,让我们看一下 Firefox 实现的 API 的限制。总的来说,这些限制可以概括如下

另请参见