javascript求相对路径
求相对路径的思路:
比如
var path1 = "D://su/ni/you/tas/you/d.html";
var path2 = "D://su/ni/you/tas/b.html";
如果相对于path1求path2的相对路径,去掉"D://",将剩下的字符串转为数组。
p1 = ['su','ni','you','tas','you','d.html'] p2 = ['su','ni','you','tas','b.html']
然后for循环,依次比较p1和p2的元素,例子中,p1[4] != p2[4] 那么d.html要向上走p1.length - 4 值为2.
也就是 ../../ 。p2[4] 的值为 b.html 。 将两者进行拼接, ../../b.html 就是path1相对于path2的相对路径。
ps 记得要对盘符进行判断,如果不在同一个盘符,那也就没有相对路径一说了。以下是具体实现代码。
<script>
var path1 = "D://su/ni/you/tas/you/d.html";
var path2 = "D://su/ni/you/tas/b.html";
//求path1 相对于 path2 的相对路径。 ../../you/tas/b.html
function contrast(p1,p2){
if(p1.substr(0,1).toUpperCase() != p2.substr(0,1).toUpperCase()){
return "不在同一个根目录";
}
var arrPath1 = p1.substr(4).split('/');
var arrPath2 = p2.substr(4).split('/');
for(var i=0;i<path1.length;i++){
console.log(i);
if(arrPath1[i] != arrPath2[i]){
if(arrPath1.length - i > 1){
var str = '';
for(var j=0;j<arrPath1.length-i;j++){
str += '../';
}
str += arrPath2.slice(i).join("/");
}
if(arrPath1.length - i == 1){
var str="./";
str += arrPath2[i];
}
return str;
}
}
}
console.log(contrast(path1,path2));
</script>

浙公网安备 33010602011771号