Domanda

Sto costruendo una libreria JS, che ha un requisito di guardare forma [azione] e un [href] valori e risolverli in URL assoluti.

Per esempio, io sono su http: // a / b / c / d; p q e di incontro un valore href di "../g" (scontato non c'è nessuna base> elemento <). L'assoluto risultante sarebbe: http: //. A / b / g

C'è una libreria JS che fa questo già? Dovrei credere così.

Per ulteriori informazioni su ciò che è necessario, le specifiche: http://tools.ietf.org/html/rfc3986#section-5.4

È stato utile?

Soluzione

Si scopre che l'attributo .href di un elemento A (non .getAttribute('href'), ma .href) restituisce l'URL risolto (assoluto).

Altri suggerimenti

Nel browser moderni, il built-in URL maniglie costruttore in questo modo:

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

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

Se si desidera che la base per essere relativo al documento corrente, è possibile farlo in modo esplicito:

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

L'oggetto URL dà anche accesso a tutti i componenti URL (protocollo, host, il percorso, di ricerca, di hash, ecc.).

soluzione JS pura Nizza che funziona senza DOM: https://gist.github.com/1088850 (funziona in tutto il mondo, ma particolarmente utile per lato server JS).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top