在我的函数中,用户输入了一个类似的路径'./images/profile'
,我需要检查页面的当前路径是否与他传递的路径相同。IE。检查是否path == location.pathname
.
如果location.pathname
是/scripts
并且输入的路径./../parent/scripts
是父目录是脚本的父目录,比较应该返回,如果输入的路径是等等true
,它应该返回。那么在JS中有什么方法来比较两个路径吗?false
./../parent/images
在我的函数中,用户输入了一个类似的路径'./images/profile'
,我需要检查页面的当前路径是否与他传递的路径相同。IE。检查是否path == location.pathname
.
如果location.pathname
是/scripts
并且输入的路径./../parent/scripts
是父目录是脚本的父目录,比较应该返回,如果输入的路径是等等true
,它应该返回。那么在JS中有什么方法来比较两个路径吗?false
./../parent/images
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;
应该做的任务。也许正则表达式会更短,但它不允许在数组中导航:-)
没有内置的方法来比较或解析路径。您将不得不求助于解析字符串,或者某种技巧,例如在隐藏的 iframe 中加载相对路径并检查它location.href
是否等于当前窗口的location.href
……并不是我提倡这种方法。
function comparePath(path1, path2) {
var path1Dir = path1.substring(path1.lastIndexOf('/'));
var path2Dir = path2.substring(path2.lastIndexOf('/'));
return path1Dir == path2Dir;
}
您可以通过调用获得结果:comparePath(path, location.pathname);