Question

Dans mon utilisateur fonction des entrées comme un chemin './images/profile' et je dois vérifier si le chemin actuel de la page est le même que le chemin qu'il a passé. C'est à dire. vérifier si path == location.pathname.

si location.pathname est /scripts et le chemin entré ./../parent/scripts où parent est le répertoire parent des scripts, la comparaison doit revenir true et il devrait revenir false si le chemin INTRODUIT est ./../parent/images etc. Donc, est-il une méthode de JS pour comapre deux chemins?

Était-ce utile?

La solution

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;

devrait faire la tâche. Peut-être un regexp serait plus court, mais il ne permet pas la navigation dans des tableaux: -)

Autres conseils

Il n'y a pas intégré moyen de comparer ou de chemins résoudre. Vous devrez recourir à l'analyse syntaxique des chaînes, ou une sorte de hack comme le chargement du chemin relatif dans une iframe cachée et vérifier si son location.href est égale à la location.href de la fenêtre en cours ... pas que je préconise cette approche.

function comparePath(path1, path2) {
  var path1Dir = path1.substring(path1.lastIndexOf('/'));
  var path2Dir = path2.substring(path2.lastIndexOf('/'));
  return path1Dir == path2Dir;
}

Vous pouvez obtenir le résultat en appelant: comparePath(path, location.pathname);

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top