提议并接受的解决方案不支持服务器相对URL,并且不适用于绝对URL。例如,如果我的亲戚是/ sites / folder1,它将无法正常工作。
这是另一个功能,它支持完整的服务器相对或相对URL以及上一级的../。它不是完美的,但是涵盖了很多选项。当您的基本URL不是当前页面URL时,请使用此选项,否则会有更好的选择。
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;
}
希望这可以帮助。不能在JavaScript中使用此基本实用程序实在令人沮丧。