相対パスの連結
相対パスを解決して絶対パスに変換するためのサンプルを紹介しています。
サンプルコード
//例 joinPath("http://test/a.htm","../b.htm");
function joinPath(base,path)
{
if(base.substr(base.length-1) != '/')
{
base = base.split('/');
base.length--;
base = base.join('/');
}
else
{
base = base.substr(0,base.length-1);
}
base = base.split('\\');
while(0 == path.indexOf('../'))
{
base.length--;
path = path.substr(3);
}
base = base.join('/');
base = base + '/' + path;
return base;
}
概要
このコードは相対パスを解析して絶対パスに変換するものです。現在対応しているのは「../」で、階層をさかのぼるもののみです。
プログラミング的な話をすると、
1.base変数のパスの最後にスラッシュがついていればそのスラッシュを消去し、ついていなければファイル名と見なしファイル名と一つ前のスラッシュを消去します。
2.path変数に「../」が見つかればbase変数の最後のスラッシュ以降を消去します。
3.最後にbaseとpathを加算して値を返します。