Lorsque vous parlez de problèmes liés au chemin, tout le monde pensera à Window.Location. Il est vrai que cet objet fournit beaucoup d'informations sur le chemin, et celles couramment utilisées incluent:
1.Location.href: L'URL complète de la page actuelle
2.Location.pathname: le nom du chemin dans l'URL actuelle
3.Location.hash: point d'ancrage dans l'URL actuelle
4.Location.Search: Paramètres de requête dans l'URL actuelle
Cependant, l'emplacement n'a pas de propriété qui obtient directement le chemin d'accès absolu vers le répertoire actuel (à l'exclusion du nom de fichier). Grâce à Google, j'ai trouvé de mauvaises méthodes, telles que la séparation de l'URL en un tableau via "/", en supprimant le dernier élément du tableau, puis en le concaténant en une chaîne. Mais si le nom de fichier n'est pas spécifié dans l'URL, le résultat est une grosse erreur.
Selon l'expérience de codage précédent, l'attribut HREF de l'élément A renvoie toujours un chemin absolu, ce qui signifie qu'il a la capacité de convertir le chemin relatif en un chemin absolu. Je l'ai essayé avec le code suivant et il s'est avéré être:
La copie de code est la suivante:
var a = document.CreateElement ('a');
a.href = './';
alerte (a.href);
a = null;
Malheureusement, cette méthode ne fonctionne pas sous l'ancien IE 6/7, et lorsque l'alerte (a.href) est exécutée, le pop-up est toujours "./". Plus tard, j'ai trouvé que quelqu'un avait soulevé ce problème sur StackOverflow, et la solution est également très simple. Injectez juste A travershtml:
La copie de code est la suivante:
var div = document.CreateElement ('div');
div.innerhtml = '<a href = "./"> </a> ";
alert (div.firstchild.href);
div = null;
Quelqu'un peut demander: pourquoi ne pas utiliser des expressions régulières? Ma réponse est: considérant s'il y a un nom de fichier, un point d'ancrage et un paramètre de requête, cette expression régulière peut être assez compliquée.