Chrome中FileSystemDirectoryEntry未定义错误的原因及解决问询
问题解决:Chrome中FileSystemDirectoryEntry未定义的错误
原因分析
这不是Chrome的bug,是API使用方式的问题。Chrome对FileSystem API的实现遵循了更新后的规范,现在不再使用带FileSystem前缀的接口名:
- 原
FileSystemDirectoryEntry对应现在的DirectoryEntry - 原
FileSystemFileEntry对应现在的FileEntry
你打印的item已经是DirectoryEntry实例,说明Chrome已经正确返回了目录条目,但代码里还在引用旧的接口名,导致ReferenceError。
修复方案
修改代码中对接口的判断逻辑,直接使用不带前缀的接口名:
// 原错误写法 if (item instanceof FileSystemDirectoryEntry) { // 目录操作 } else if (item instanceof FileSystemFileEntry) { // 文件操作 } // 修复后写法 if (item instanceof DirectoryEntry) { // 目录操作 } else if (item instanceof FileEntry) { // 文件操作 }
或者更稳妥的跨浏览器兼容写法,直接使用实例自带的属性判断:
if (item.isDirectory) { // 目录操作(item是DirectoryEntry实例) } else if (item.isFile) { // 文件操作(item是FileEntry实例) }
补充说明
Firefox的实现可能还保留了带前缀的接口名作为兼容,但为了跨浏览器一致性,推荐使用不带前缀的接口名,或者直接用isDirectory/isFile属性判断,这样在Chrome和Firefox中都能正常工作。
内容的提问来源于stack exchange,提问作者user12582392
相关产品推荐
相关产品推荐

