Um relative URLs in JavaScript
-
30-09-2019 - |
Frage
Ich baue eine JS-Bibliothek, die eine Anforderung des Betrachtens Form hat [Aktion] und einem [href] Werte und lösen sie in absolute URLs.
Zum Beispiel bin ich auf http: // a / b / c / d; p q und ein href Wert von „../g“ begegnen (davon ausgehen, gibt es kein
Gibt es eine JS-Bibliothek, die dies bereits tut? Ich würde so glauben haben.
Für weitere Informationen über das, was gebraucht wird, die Spezifikation: http://tools.ietf.org/html/rfc3986#section-5.4
Lösung
Es stellt sich heraus, dass das .href
Attribut eines A-Element (nicht .getAttribute('href')
, aber .href
) gibt die aufgelöste (absolute) URL.
Andere Tipps
In modernen Browsern, die eingebaute URL Konstruktor Griffe folgt aus:
u = (new URL("?newSearch",
"http://a.example/with/a/long/path.file?search#fragment")).href
(Ausbeuten http://a.example/with/a/long/path.file?newSearch
)
Wenn Sie die Basis wollen auf das aktuelle Dokument relativ zu sein, können Sie das explizit tun:
u = (new URL("?newSearch", document.location)).href
Das URL
Objekt können Sie auch auf alle der URL-Komponenten zugreifen (Protokoll, Host, Pfad, Suche, Hash-usw.).
Nizza reine JS Lösung, die funktioniert ohne DOM: https://gist.github.com/1088850 (funktioniert überall, aber besonders nützlich für die Server-Seite JS).