Почему нет отдельных компонентов пути, возвращаемых из метода разрешения направления каталогов с Chrome для Android?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Почему нет отдельных компонентов пути, возвращаемых из метода разрешения направления каталогов с Chrome для Android?

Сообщение Anonymous »

В Chrome версии 132 представлен API доступа к файловой системе с возможностью выбора каталога https://developer.chrome.com/docs/capab ... tem-access.
Однако в настольных версиях Chrome функция ˋresolveˋ записи каталога возвращает Promise с массивом компонентов пути к записи. https://developer.mozilla.org/en-US/doc ... le/resolve, под Android кажется, что функция всегда возвращает, независимо от уровня вложенности, только двухкомпонентный путь, начинающийся с ˋdocumentˋ, за которым следует строка, в которую включены каталоги, но разделенные символом ˋ%2ˋ, и префиксом, например. ˋprimary%3ADocuments%2Fˋ.
Эта разница между ˋresolveˋ Chrome для настольных компьютеров и ˋresolveˋ для Android обусловлена ​​дизайном или особенностью/ошибкой первого выпуска?
Пример страницы, открывающей средство выбора каталога: https://martin-honnen.github.io/js/2025 ... Test1.html, если я открою каталог, например с именем ˋxslt-1.0ˋ в настольной версии Chrome я получаю некоторую иерархию, например
  • xslt-1.0

    < li>подпапка1 (подпапка1)

    module-test2.xsl (подпапка1/модуль-test2.xsl)
[*]module-test1.xsl (module-test1.xsl)

< /li>

На Android я получаю плоские пути в форме, например:
  • xslt- 1.0

    подпапка1 (документ/основной%3ADocuments%2Fxslt-1.0%2Fподпапка1)

    module-test2.xsl (документ/основной%3ADocuments%2Fxslt-1.0%2Fподпапка1%2Fмодуль -test2.xsl)
[*]module-test1.xsl (document/primary%3ADocuments%2Fxslt-1.0%2Fmodule-test1.xsl)



Я также включаю код как фрагмент кода, но поскольку JavaScript выполняется внутри iframe, использование средства выбора каталога не работает.

Код: Выделить всё

    async function buildRootDirList(dirHandle) {
const ul = document.createElement('ul');
document.body.appendChild(ul);
const li = document.createElement('li');
ul.appendChild(li);
li.appendChild(document.createTextNode(dirHandle.name));
await buildDirList(dirHandle, dirHandle, li);
}
async function buildDirList(dirHandle, rootDirHandle, parentElement) {
const ul = document.createElement('ul');
parentElement.appendChild(ul);
for await (const entry of dirHandle.values()) {
const li = document.createElement('li');
ul.appendChild(li);
li.appendChild(document.createTextNode(`${entry.name} (${(await rootDirHandle.resolve(entry)).join('/')})`));
if (entry.kind === 'directory') {
await buildDirList(entry, rootDirHandle, li);
}
}
}
document.getElementById('dp1').addEventListener('click', async () => {
const dirHandle = await window.showDirectoryPicker();
await buildRootDirList(dirHandle);
});  



Подробнее здесь: https://stackoverflow.com/questions/793 ... thod-of-di
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»