Warum gibt die Auflösungsmethode des Verzeichnishandles bei Chrome für Android keine eindeutigen Pfadkomponenten zurück?Android

Forum für diejenigen, die für Android programmieren
Guest
 Warum gibt die Auflösungsmethode des Verzeichnishandles bei Chrome für Android keine eindeutigen Pfadkomponenten zurück?

Post by Guest »

Chrome Version 132 hat die Dateisystemzugriffs-API mit einer Verzeichnisauswahl https://developer.chrome.com/docs/capab ... tem-access eingeführt.
In Desktop-Versionen von Chrome gibt die Funktion „Auflösen“ eines Verzeichniseintrags jedoch ein Promise mit einem Array von Pfadkomponenten zu einem Eintrag zurück https://developer.mozilla.org/en-US/doc ... le/resolve, unter Android scheint es, dass die Funktion unabhängig von der Verschachtelungsebene immer nur einen zweikomponentigen Pfad zurückgibt, der mit „document“ beginnt, gefolgt von einem Zeichenfolge, die Verzeichnisse enthält, die jedoch durch ˋ%2ˋ und ein Präfix von z. B. getrennt sind. ˋprimary%3ADocuments%2Fˋ.
Ist dieser Unterschied zwischen Chrome Desktop „resolve“ und Android „resolve“ beabsichtigt oder eine Eigenart/ein Fehler dieser ersten Version?
Eine Beispielseite zum Öffnen einer Verzeichnisauswahl ist https://martin-honnen.github.io/js/2025 ... Test1.html, wenn ich ein Verzeichnis öffne z.B. mit dem Namen ˋxslt-1.0ˋ auf einer Desktop-Version von Chrome erhalte ich eine Hierarchie von z. B.
  • xslt-1.0

    < li>Unterordner1 (Unterordner1)

    module-test2.xsl (Unterordner1/module-test2.xsl)
[*]module-test1.xsl (module-test1.xsl)

< /li>

Unter Android erhalte ich flache Pfade in der Form von z. B.
  • xslt- 1.0

    Unterordner1 (document/primary%3ADocuments%2Fxslt-1.0%2Fsub-folder1)

    module-test2.xsl (document/primary%3ADocuments%2Fxslt-1.0%2Fsub-folder1%2Fmodule -test2.xsl)
[*]module-test1.xsl (document/primary%3ADocuments%2Fxslt-1.0%2Fmodule-test1.xsl)



Ich füge den Code auch als Code-Snippet ein, aber da das JavaScript dort innerhalb eines Iframes ausgeführt wird, funktioniert die Verwendung einer Verzeichnisauswahl nicht.

Code: Select all

    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);
});  < /code>
    

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post