0

私の関数では、ユーザーが次のようなパスを入力し'./images/profile'、ページの現在のパスが彼が渡したパスと同じであるかどうかを確認する必要があります。I.e。かどうかを確認しpath == location.pathnameます。

location.pathnameisであり、親がスクリプトの親ディレクトリである場合/scriptsに入力されたパスの場合、比較が返され、入力されたパスがなどの場合に返される必要があります。./../parent/scriptstruefalse./../parent/images

4

3 に答える 3

1

パスを比較または解決するための組み込みの方法はありません。文字列を解析するか、非表示のiframeに相対パスを読み込んで、それlocation.hrefが現在のウィンドウと等しいかどうかを確認するなどのハックを行う必要がありますlocation.href...私がそのアプローチを提唱しているわけではありません。

于 2012-02-18T06:00:29.960 に答える
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
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 に答える