online: 3; azi: 147; total: 52153 Webdesign - Coduri-si-functii-in-js - 16

Extrage nume domeniu si alte date din adresa URL

Functia prezentata in aceasta paagina (urlData() ) extrage numele de domeniu si alte date din adresa URL: Protocol, Calea Paginii, Nume-fisier, partea de cautare (dupa '?'), port, si hash (dupa '#').
Functia primeste un sir cu adresa URL si returneaza un obiect cu aceste date.
- Se foloseste o tehnica simpla: adresa URL e mai intai adaugata in atributul "href" dintr-un element <a> creat cu createElement(), apoi se aplica proprietatile obiectului "href" la adresa URL preluata din atributul "href".

Codul functiei:
// Etrage date din adresa URL. De la: http://discant.ro/javascript/
// Returneaza un obiect cu parti din adresa URL:
// protocol, nume domeniu (fara 'www'), port, cale paagina, nume fisier, partea de cautare si hash
function urlData(url) {
  // obiect pt datele ce vor fi returnate
  var redata = {protocol: '', domain: '', port: 80, path: '', file: '', search: '', hash: ''};

  // creaza un element link si adauga adresa url in atributul "href"
  var a_elm  = document.createElement('a');
  a_elm.href = url;

  // adauga datele din URL in obiectul redata, si-l returneaza
  redata.protocol = a_elm.protocol.replace(':', '');
  redata.domain = a_elm.hostname.replace('www.', '');
  if(a_elm.port != '') redata.port = a_elm.port;
  redata.path = a_elm.pathname;
  if(a_elm.pathname.match(/[^\/]+[\.][a-z0-9]+$/i) != null) redata.file = a_elm.pathname.match(/[^\/]+[\.][a-z0-9]+$/i);
  redata.search = a_elm.search.replace('?', '');
  redata.hash = a_elm.hash.replace('#', '');
  return redata;
}
Exemplu:
<div id="urld">Aici sunt afisate datele din URL.</div>
<script type="text/javascript">
// Etrage date din adresa URL. De la: http://discant.ro/javascript/
// Returneaza un obiect cu parti din adresa URL:
// protocol, nume domeniu (fara 'www'), port, cale paagina, nume fisier, partea de cautare si hash
function urlData(url) {
  // obiect pt datele ce vor fi returnate
  var redata = {protocol: '', domain: '', port: 80, path: '', file: '', search: '', hash: ''};

  // creaza un element link si adauga adresa url in atributul "href"
  var a_elm  = document.createElement('a');
  a_elm.href = url;

  // adauga datele din URL in obiectul redata, si-l returneaza
  redata.protocol = a_elm.protocol.replace(':', '');
  redata.domain = a_elm.hostname.replace('www.', '');
  if(a_elm.port != '') redata.port = a_elm.port;
  redata.path = a_elm.pathname;
  if(a_elm.pathname.match(/[^\/]+[\.][a-z0-9]+$/i) != null) redata.file = a_elm.pathname.match(/[^\/]+[\.][a-z0-9]+$/i);
  redata.search = a_elm.search.replace('?', '');
  redata.hash = a_elm.hash.replace('#', '');
  return redata;
}

// Test
var url = 'http://www.discant.ro:80/javascript/index.php?pg=tutorial&id=89#hash_part';
var urlOb = urlData(url);

// arata datele din URL in #urld
document.getElementById('urld').innerHTML = 'protocol: = '+ urlOb.protocol +'<br/>domain = '+ urlOb.domain +'<br/>port = '+ urlOb.port +'<br/>path = '+ urlOb.path +'<br/>file = '+ urlOb.file +'<br/>search = '+ urlOb.search +'<br/>hash = '+ urlOb.hash;
</script>
Rezultat:
protocol: = http
domain = discant.ro
port = 80
path = /javascript/index.php
file = index.php
search = pg=tutorial&id=89
hash = hash_part