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:
1 |
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
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('/') > 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…” .
Ceea ce a zis tu funcioneaza numai când se foloseste portul 80 dar pentru alte porturi ar fi frumos sa soliciti si portul ;)
Nu prea cunosc pe nimeni să vrea să ruleze javascript pe alte protocoale decât http sau https… .
Dar dacă tu vrei, poți să-l modifici să facă și asta.