Question

Je construis une bibliothèque JS qui a besoin de regarder la forme [action] et un [href] les valeurs et les résoudre dans les URL absolues.

Par exemple, je suis sur http: // a / b / c / d; p q et rencontrer une valeur href de « ../g » (en supposant qu'il n'y a pas l'élément ). La serait absolue résultant soit: http: //. A / b / g

Y at-il une bibliothèque JS qui fait cela déjà? Je dois le croire.

Pour plus d'informations sur ce qui est nécessaire, les spécifications: http://tools.ietf.org/html/rfc3986#section-5.4

Était-ce utile?

La solution

Il se trouve que l'attribut .href d'un élément A (non .getAttribute('href'), mais .href) renvoie l'URL résolue (absolue).

Autres conseils

Dans les navigateurs modernes, le constructeur en construction URL poignées ceci:

u = (new URL("?newSearch",
             "http://a.example/with/a/long/path.file?search#fragment")).href

(rendement http://a.example/with/a/long/path.file?newSearch)

Si vous voulez que la base soit par rapport au document en cours, vous pouvez le faire explicitement:

u = (new URL("?newSearch", document.location)).href

L'objet URL vous donne également accès à tous les composants d'URL (protocole, hôte, le chemin, la recherche, hachage, etc.).

Nice solution pure JS qui fonctionne sans DOM: https://gist.github.com/1088850 (fonctionne partout, mais particulièrement utile pour le côté serveur JS).

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