new URL() în JavaScript

URL și codificare Browserele moderne, Node.js 10+ (URL.canParse: 2023, URL.parse: 2024)

Desface o adresă URL în părți (domeniu, cale, parametri) și o construiește corect la loc.

Sintaxă
const url = new URL(adresa, baza);
url.hostname, url.pathname, url.searchParams
URL.canParse(adresa)
URL.parse(adresa)

Ce face new URL()

new URL(adresa) citește adresa și oferă părțile ca proprietăți: protocol, hostname, port, pathname, search, hash, origin. Proprietatea searchParams este un URLSearchParams legat de adresă. Modificarea oricărei proprietăți actualizează href.

Cu al doilea parametru rezolvi adrese relative: new URL("../poza.jpg", "https://site.ro/blog/articol/"). O adresă invalidă aruncă TypeError; URL.canParse verifică fără excepție, iar URL.parse returnează null în loc să arunce. toString() și toJSON() returnează adresa completă.

Parametri

Parametru Descriere
adresa Adresa, absolută sau relativă.
baza Opțional. Adresa de bază pentru adresele relative.

Ce returnează

Un obiect URL.

Exemple

Exemplul 1: Părțile unei adrese

const url = new URL("https://www.dexblog.ro:8080/invata/javascript/?pagina=2&sort=nou#exemple");

console.log(url.protocol, url.hostname, url.port);
console.log(url.pathname, url.search, url.hash);
console.log(url.origin);
console.log(url.searchParams.get("pagina"));

Rezultat

https: www.dexblog.ro 8080
/invata/javascript/ ?pagina=2&sort=nou #exemple
https://www.dexblog.ro:8080
2

Exemplul 2: Modificare, adrese relative și validare

const url = new URL("https://www.exemplu.ro/produse");
url.searchParams.set("categorie", "cărți & reviste");
url.hash = "lista";
console.log(url.toString());
console.log(JSON.stringify({ link: url }));

console.log(new URL("../poze/cap.jpg", "https://site.ro/blog/articol/").href);
console.log(URL.canParse("nu e adresă"), URL.canParse("/relativ", "https://site.ro"));
console.log(URL.parse("nu e adresă"), URL.parse("mailto:ana@exemplu.ro")?.protocol);

Rezultat

https://www.exemplu.ro/produse?categorie=c%C4%83r%C8%9Bi+%26+reviste#lista
{"link":"https://www.exemplu.ro/produse?categorie=c%C4%83r%C8%9Bi+%26+reviste#lista"}
https://site.ro/blog/poze/cap.jpg
false true
null mailto:

Greșeli frecvente

  • Construiești adrese lipind texte și parametrii cu diacritice sau & nu sunt codificați. Folosește URL și searchParams.
  • Creezi new URL("/pagina") fără bază și primești TypeError: Invalid URL. Adresele relative au nevoie de al doilea parametru (în browser, location.href).

Comenzi înrudite