Michael_K: zulässige Protokolle für URL() constructor

Beitrag lesen

Hallo Martin

kannte ich bisher nicht, ich sehe auch den Einsatzzweck nicht.

Mit dem URL constructor kann man sehr gut relative URLs auflösen, was nicht immer sehr trivial ist. Und dafür nutze ich es auch. Zum Beispiel new URL(relativePath, baseURL).toString()

Aber ich würde doch spontan sagen: Alle die Protokolle, die dem Betriebssystem, unter dem der Code läuft, bekannt sind.

Wie erkennt eine JS-Engine, welche Protokolle vom OS unterstützt werden. und http ist ja nicht wirklich ein OS-Protokoll (?)

Liegt's an der falschen Schreibweise von with?

Nein, das Beispiel sollte nur veranschaulichen, dass beim ersten alert die Leerzeichen in der URL gewandelt werden. Beim zweiten Alert mit dem protocol scheme "zip:" werden die Leerzeichen nicht in %20 gewandelt. Interessant ist aber, dass die relativen URL trotzdem richtig aufgelöst werden. Es scheint, das nur bei bestimmten protocol scheme gewandelt wird. aber ich möchte eben wissen, für welche das gilt. Bei "file://" wird z.B. auch gewandelt. Bei "resource://" aber nicht, obwohl das protocol scheme bekannt ist. (grübel)

Vermutlich ja: Installiere einen Handler für das gewünschte Protokoll, der die nötige Funktionalität bereitstellt.

Wie meinst du das? Meine aktuelle Lösung ist, dass ich den Anfang des Strings prüfe auf zip:// und für den URL constructor austauschen um danach ihn wieder einzusetzen. Das ist aber keine schöne Lösung. Und zudem brauche ich eine Lösung, die in allen gängigen Browsern funktioniert.

Der Einsatzzweck bei mir ist eine Zip-Datei, deren Inhalt mit JavaScript in ein JS-Object entpackt wird. Die Dateien in der Zip-Datei enthalten Verlinkungen untereinander, die für die Verarbeitung aufgelöst werden müssen.

Gruss