Găsește adresa gazdei (host-ul) curente cu javascript

Publicat la 10 februarie 2011, în Blog, Freebies, de Adrian7

Nu de puține ori s-a întâmplat să am  nevoie, într-un fișier sursă JavaScript, de adresa/domeniul pe care se găsește script-ul pentru a înlocui diferite variabile: calea către o imagine, statistici, etc.

Prima opțiune de rezolvare a problemei este destul de simplă și presupune înlocuirea unei variabile JavaScript din PHP. De exemplu:

 var _WWW_HOST = '<?=$_HOST?>';

Unde $_HOST este o variabilă generată din PHP pentru stabilirea host-ului. Dar, dacă fișierul js este static, și deci nu putem executa cod decât pe client, trebuie să apelăm la variabila window, mai exact la window.location.href. Codul de mai jos creează o variabilă globală, _WWW_HOST reprezentând adresa gazdei pe care rulează script-ul. De asemea, protocolul este extras separat, pentru a detecta dacă rulează sub HTTP sau HTTPS:

function get_document_protocol(){
	var windaddr = window.location.href;
	var slashes   = windaddr.indexOf('//');
 
	var w_protocol = windaddr.substring(0, slashes);
 
	return w_protocol;
}
 
function get_host(){
	var windaddr = window.location.href;
	var slashes   = windaddr.indexOf('//');
 
	var w_host = windaddr.substring(slashes+2);
 
	if(w_host.indexOf('/') &gt; 0){
		w_host = w_host.substring(0, w_host.indexOf('/'));
	}
 
	return w_host;
}
 
function get_abspath(relative_path){
	var proto = get_document_protocol();
	var host  = get_host();
 
	return proto + '//' + host + relative_path;
}
 
//the path to the current host as global var
var _WWW_HOST = get_abspath('');

Funcția get_abspath() poate fi folosită și pentru a afla calea absoultă a unei resurse, trimițând ca parametru calea relativă.
Pentru a downloada scriptul dați click-dreapta și “Save link as…” .

download

Marcat cu:
 

2 Comentarii la “Găsește adresa gazdei (host-ul) curente cu javascript”

  1. Florin Buda spune:

    Ceea ce a zis tu funcioneaza numai când se foloseste portul 80 dar pentru alte porturi ar fi frumos sa soliciti si portul ;)

Adaugă comentariu