在我的函数中,用户输入类似'./images/profile'
的路径,我需要检查页面的当前路径是否与他传递的路径相同。
I. e。检查path == location.pathname
。
如果location.pathname
为/scripts
且路径输入./../parent/scripts
,其中parent是脚本的父目录,则比较应返回true
并返回false
如果输入的路径是./../parent/images
等。
那么JS中是否有任何方法可以同步两个路径?
答案 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);