Die vorgeschlagene und akzeptierte Lösung unterstützt keine serverbezogenen URLs und funktioniert nicht mit absoluten URLs. Wenn mein Verwandter / sites / folder1 ist, funktioniert das zum Beispiel nicht.
Hier ist eine weitere Funktion, die vollständige, serverbezogene oder relative URLs sowie ../ für eine Ebene höher unterstützt. Es ist nicht perfekt, deckt aber viele Optionen ab. Verwenden Sie diese Option, wenn Ihre Basis-URL nicht die aktuelle Seiten-URL ist. Andernfalls gibt es bessere Alternativen.
function relativeToAbsolute(base, relative) {
if (base[base.length - 1] != '/')
base += '/';
let url = base.substr(0, base.indexOf('/', base.indexOf('//') + 2));
let baseServerRelative = base.substr(base.indexOf('/', base.indexOf('//') + 2));
if (relative.indexOf('/') === 0)
url += relative;
else if (relative.indexOf("://") > 0)
url = relative;
else {
while (relative.indexOf('../') === 0) {
relative = relative.substring(3);
if (baseServerRelative !== '/') {
let lastPartIndex = baseServerRelative.lastIndexOf('/', baseServerRelative.length - 2);
baseServerRelative = baseServerRelative.substring(0, lastPartIndex + 1);
}
}
url += baseServerRelative + relative;
}
return url;
}
Hoffe das hilft. Es war wirklich frustrierend, dieses grundlegende Dienstprogramm nicht in JavaScript verfügbar zu haben.