0

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

如果location.pathname/scripts并且输入的路径./../parent/scripts是父目录是脚本的父目录,比较应该返回,如果输入的路径是等等true,它应该返回。那么在JS中有什么方法来比较两个路径吗?false./../parent/images

4

3 回答 3

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;

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

于 2012-02-18T06:05:51.610 回答
1

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

于 2012-02-18T06:00:29.960 回答
-1
function comparePath(path1, path2) {
  var path1Dir = path1.substring(path1.lastIndexOf('/'));
  var path2Dir = path2.substring(path2.lastIndexOf('/'));
  return path1Dir == path2Dir;
}

您可以通过调用获得结果:comparePath(path, location.pathname);

于 2012-02-18T06:27:27.533 回答