Url de un dominio con Javascript

Para un proyecto y por necesidades de «producción» necesitábamos saber cuál era el dominio base desde Javascript y a poder ser, sin utilizar php.

La solución: capturar la url actual, separar el protocolo por un lado y el dominio junto con sus subdominios por otro lado (si los hubiere), y separar estos últimos, siendo el primier elemento resultante el nombre del dominio.

El resultado es algo así.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<script type="text/javascript">
function dominio_base()
{
// capturamos la url
url_site = document.location.href

// La separamos por la doble barra
url_pos = url_site.indexOf('//');

// por un lado tenemos la url sin protocolos
url_limpia = url_site.substr(url_pos+2);

// y por otro lado el protocolo usado
url_prot = url_site.substr(0,url_pos+2);

// separamos todas las posibles carpetas
url_split = url_limpia.split('/');

// y obtenemos el dominio actual
url_base = url_prot + url_split[0];

return url_base;
}
</script>

Al llamar a la función, simplemente nos devuelve el dominio.

1
2
3
4
5
6
7
<script type="text/javascript">
// mostrarlo en un alert
alert(dominio_base());

// escribirlo en un documento
document.writeIn('mi dominio es ' + dominio_base());
</script>

8 comentarios.


  • 20 de octubre de 2009 a las 17:37
    Martin dice...
    Hola! Había otras opciones para obtener los mismos datos aunque separados...

    Si mi url es h t t p : / / localhost/test.php

    document.write(location.pathname); //devuelve la ruta relativa, en este caso /test.php
    document.write(location.host); //devuelve el host, en este caso, localhost


    Abrazos!

  • 20 de octubre de 2009 a las 18:49
    cmacias dice...
    Hola Martin, buena solución - y más sencilla -. No obstante en nuestro caso necesitábamos también saber el protocolo que estaba utilizando.

  • 21 de octubre de 2009 a las 16:26
    Christian dice...
    Pues lo que planteas se soluciona más facil que tener que estar "inventando la rueda" con tanto codigo JS
    alert(location.host); => Devuelve el dominio o host donde está ejecutandose la pagina
    alert(location.protocol); => devuelve el host, creo que eso necesitabas tambien saber

    Un consejo: leer un poco más

  • 21 de octubre de 2009 a las 18:36
    cmacias dice...
    @Christian, tenía tu mensaje como SPAM, por eso no se publicó antes.

    Efectivamente, poco después de la respuesta de @Martin, busqué algo de información que amplié en un nuevo post.

    Y si, hay que leer más y buscar mejor, el caso es que a veces el tiempo para hacerlo es limitado ... aunque al final pierdes más tiempo en crear algo nuevo que en buscarlo.

    Un saludo

  • 21 de octubre de 2009 a las 18:46
    Martin dice...
    A mi me parece genial plantear tantas formas distintas de hacer lo mismo. Es evidente que es más productivo usar la forma más simple, pero me parece igual de válido el buscar el método "made in home"...

  • 3 de junio de 2010 a las 17:10
    Tavo dice...
    Llegué tarde a esta conversación, pero quiero felciitar a Carlos por la inventiva... y a Martín y Christian por los aportes.

    Solo puedo agregar que, como dijo Temístocles,;) siempre que uno necesita hacer algo, es seguro que alguien ya lo hizo!!!

    Saludos cordiales
    Tavo

    • 3 de junio de 2010 a las 17:20
      cmacias dice...
      Efectivamente. Para que reinventar la rueda ? Lo malo es que a veces el apuro y la falta de tiempo te impide ver que la solución "está ahí fuera" :P

  • 12 de octubre de 2012 a las 18:48
    Juan dice...
    Pero con poner document.domain ya obtienes el dominio xDD
Deja tu comentario