比较路径

时间:2012-02-18 05:48:06

标签: javascript path location pathname

在我的函数中,用户输入类似'./images/profile'的路径,我需要检查页面的当前路径是否与他传递的路径相同。 I. e。检查path == location.pathname

如果location.pathname/scripts且路径输入./../parent/scripts,其中parent是脚本的父目录,则比较应返回true并返回false如果输入的路径是./../parent/images等。 那么JS中是否有任何方法可以同步两个路径?

3 个答案:

答案 0 :(得分:1)

没有内置的比较或解析路径的方法。您将不得不求助于解析字符串,或者某种破解,例如在隐藏的iframe中加载相对路径并检查其location.href是否等于当前窗口的location.href ...不是我提倡这种做法。

答案 1 :(得分:1)

var p = currentpath + inputpath;
var frags = p.split("/");
for (var i=0; i<frags.length; i++) {
    if (i>0 && frags[i] == "..") {
        frags.splice(i-1, 2);
        i -= 2;
    } else if (!frags[i] && frags[i][0] == ".") { // removes also three or more dots
        frags.splice(i, 1);
        i--;
    }
}
return frags.join("/") == suggestedpath;

应该完成任务。也许正则表达式会更短,但它不允许在数组中导航: - )

答案 2 :(得分:-1)

function comparePath(path1, path2) {
  var path1Dir = path1.substring(path1.lastIndexOf('/'));
  var path2Dir = path2.substring(path2.lastIndexOf('/'));
  return path1Dir == path2Dir;
}

您可以致电:comparePath(path, location.pathname);

来获得结果