Javascript 比较路径
在我的函数中,用户输入一个路径,如Javascript 比较路径,javascript,path,location,pathname,Javascript,Path,Location,Pathname,在我的函数中,用户输入一个路径,如。/images/profile',我需要检查页面的当前路径是否与他通过的路径相同。 即。检查path==location.pathname 如果location.pathname为/scripts且输入的路径为/./parent/scripts,其中parent为脚本的父目录,则比较应返回true,如果输入的路径为/./parent/images等,则应返回false。 那么在JS中有什么方法可以比较两条路径吗?没有内置的方法来比较或解析路径。您将不得不求助于
。/images/profile'
,我需要检查页面的当前路径是否与他通过的路径相同。
即。检查path==location.pathname
如果location.pathname
为/scripts
且输入的路径为/./parent/scripts
,其中parent为脚本的父目录,则比较应返回true
,如果输入的路径为/./parent/images
等,则应返回false
。
那么在JS中有什么方法可以比较两条路径吗?没有内置的方法来比较或解析路径。您将不得不求助于解析字符串,或者某种黑客手段,比如在隐藏的iframe中加载相对路径,并检查其
位置href
是否等于当前窗口的位置href
。。。我并不是在提倡这种方法。var p=currentpath+inputpath;
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;
var frags=p.split(“/”);
对于(变量i=0;变量i=0&&frags[i]=“.”){
碎片拼接(i-1、2);
i-=2;
}如果(!frags[i]&&frags[i][0]==”){//也会删除三个或更多点
碎片拼接(i,1);
我--;
}
}
return frags.join(“/”==suggestedpath;
我们应该完成这项任务。也许regexp会更短,但它不允许在数组中导航:-)
您可以通过调用:
comparePath(path,location.pathname)获得结果
当比较以通常命名的子目录结尾的任何路径时,如foo/bar
和fizz/bar
,这将给出一个假阳性。
function comparePath(path1, path2) {
var path1Dir = path1.substring(path1.lastIndexOf('/'));
var path2Dir = path2.substring(path2.lastIndexOf('/'));
return path1Dir == path2Dir;
}