Spec-Zone.ru › Web APIs

Поддержка API файлов и каталогов в Firefox

Оригинальный API файловой системы был создан, чтобы браузеры могли получить доступ к защищённой виртуальной файловой системе на устройстве пользователя. Работа по стандартизации спецификации была прекращена в 2012 году, но к тому моменту Google Chrome уже реализовал свою собственную реализацию API. Со временем ряд популярных сайтов и веб-приложений стали его использовать, часто без предоставления механизма обратного падения к стандартным API или даже проверки доступности API перед его использованием. Mozilla вместо этого выбрала реализацию других API, которые могут быть использованы для решения многих тех же проблем, таких как IndexedDB; см. блог-пост Почему в Firefox нет API файловой системы? для получения более подробной информации.

Это привело к тому, что ряд популярных веб-сайтов некорректно работали в браузерах, кроме Chrome. По этой причине была предпринята попытка создать спецификацию, предлагающую функции API Google, по которой можно было бы достичь консенсуса. Результатом стал API файлов и каталогов. Этот подмножество API, предоставленное Chrome, всё ещё не полностью определено; однако по причинам совместимости с веб-приложениями было решено реализовать подмножество API в Firefox; это было введено в Firefox 50.

В этой статье описывается, как реализация API файлов и каталогов в Firefox отличается от других реализаций и/или спецификации.

Отклонения Chrome от спецификации

Наиболее значимая проблема совместимости заключается в том, что Chrome по-прежнему использует устаревшие имена для многих интерфейсов в API, так как они реализовали связанную, но отличающуюся спецификацию:

Название в спецификации Название в Google Chrome
FileSystemDirectoryEntry DirectoryEntry
FileSystemDirectoryEntrySync DirectoryEntrySync
FileSystemDirectoryReader DirectoryReader
FileSystemDirectoryReaderSync DirectoryReaderSync
FileSystemEntry Entry
FileSystemEntrySync EntrySync
FileSystemFileEntry FileEntry
FileSystemFileEntrySync FileEntrySync

Не забудьте учесть это в своём коде, предусмотрев оба имени. Надеемся, что Chrome скоро будет обновлён для использования новых имён!

Чтобы гарантировать, что ваш код будет работать как в Chrome, так и в других браузерах, вы можете включить код, похожий на следующий:

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

Ограничения в Firefox

Далее рассмотрим ограничения реализации API в Firefox. В общих чертах, эти ограничения можно сформулировать следующим образом:

  • Скрипты контента не могут создавать файловые системы или инициировать доступ к файловой системе. В настоящее время существует только два способа получения доступа к элементам файловой системы:

    • Элемент <input>, использующий свойство HTMLInputElement.webkitEntries для доступа к массиву объектов FileSystemEntry, описывающих элементы файловой системы, которые затем можно читать.
    • Использование перетаскивания, вызывая метод DataTransferItem.webkitGetAsEntry, который позволяет получить FileSystemFileEntry или FileSystemDirectoryEntry для файлов, перетащенных в зону перетаскивания.
  • Firefox не поддерживает схему URL "filesystem:".

См. также

  • API файлов и каталогов
  • Введение в API файлов и каталогов
  • Спецификация API файлов и каталогов
  • Исходная спецификация для API файлов: каталоги и система (часто называемая «API файловой системы»); только Google Chrome реализовал этот заброшенный API.

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/File_and_Directory_Entries_API/Firefox_support

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API