如何编写一个javascript函数,它接受一个相对url的字符串参数,就好像它是一个相对路径,就像你在Linux bash脚本中看到的那样,并将它与当前网页的url结合起来找到一个相对于当前网页的资源。
相对网址的示例:
示例结果:
基本情况
超额当前目录点(和本地网页)
父目录(以及一些偶然的多余点和另一种本地网页格式)
答案 0 :(得分:1)
您可以尝试URI js library
在那里尝试relativeTo
,absoluteTo
个功能。
例如:
var uri = new URI("../../foo.html");
var newUri = uri.absoluteTo("file://C:/Users/Me/dir1/dir2/page.html");
// newUri == "file://C:/Users/Me/foo.html"
答案 1 :(得分:1)
如果您知道访问锚的href
属性总是为您提供绝对URL,您只需创建一个临时URL并阅读该属性:
function to_absolute_url(relative) {
var a = document.createElement('a');
a.href = relative;
return a.href;
}
这当然只有在您要完成的URL始终是当前页面的URL时才有效。
答案 2 :(得分:0)
以下是可行的通用解决方案:
function makePath(path, rel) {
path = path.substring(0, path.lastIndexOf("/") + 1) + rel;
var dirs = path.split("/");
var result = [];
for (var i = 0; i < dirs.length; i++) {
if (dirs[i] == ".") continue;
if (dirs[i] == "..") result.pop();
else result.push(dirs[i]);
}
return result.join("/");
}
DEMO: http://jsfiddle.net/h22SA/
申请当前页面时应使用:
makePath(location.href, "././foo.html")