jquery, dominio, obtener URL

Respuestas:

335

No necesita jQuery para esto, ya que bastará con javascript simple:

alert(document.domain);

Véalo en acción:

console.log("Output;");  
console.log(location.hostname);
console.log(document.domain);
alert(window.location.hostname)

console.log("document.URL : "+document.URL);
console.log("document.location.href : "+document.location.href);
console.log("document.location.origin : "+document.location.origin);
console.log("document.location.hostname : "+document.location.hostname);
console.log("document.location.host : "+document.location.host);
console.log("document.location.pathname : "+document.location.pathname);

Para obtener más valores relacionados con el dominio, consulte las propiedades de en window.locationlínea. Es posible que esa location.hostsea ​​una mejor opción, ya que su contenido puede diferir document.domain. Por ejemplo, la url http://192.168.1.80:8080solo tendrá la dirección IP document.domain, pero tanto la dirección IP como el número de puerto location.host.

Sampson
fuente
77
@ rob.alarcon Es una recomendación del W3C y tiene un soporte muy amplio entre los navegadores, antiguos y nuevos. El único problema que conozco es que algunos navegadores ( como Firefox ) le permitirán escribir en esta propiedad (solo según la especificación) siempre que el nuevo valor sea un subdominio del dominio original.
Sampson
44
En realidad, recomendaría usar window.location.host(como Bibby publicó). Acabo de corregir un error que document.domainse estaba configurando en el dominio raíz en lugar del subdominio.
Derek Morrison
En IE11 document.location.originvuelve undefined.
TimothyBuktu
113

EDITAR:

Si no necesita admitir IE10, simplemente puede usar: document.location.origin

Respuesta original, si necesita soporte heredado

Puede obtener todo esto y más inspeccionando el objeto de ubicación:

location = {
  host: "stackoverflow.com",
  hostname: "stackoverflow.com",
  href: "http://stackoverflow.com/questions/2300771/jquery-domain-get-url",
  pathname: "/questions/2300771/jquery-domain-get-url",
  port: "",
  protocol: "http:"
}

entonces:

location.host 

sería el dominio, en este caso stackoverflow.com. Para la primera parte completa de la url, puede usar:

location.protocol + "//" + location.host

que en este caso sería http://stackoverflow.com

No se requiere jQuery.

superluminario
fuente
@ Para la url completa, ¿por qué no usar la document.location.originque dará como resultado https://stackoverflow.com ? Este método incluye el protocolo apropiado
Nathileo
33

Similar a la respuesta antes de que haya

location.host

La ubicación global también tiene datos más divertidos sobre la URL actual. (protocolo, host, puerto, ruta, búsqueda, hash)

bibby
fuente
20

Si necesita de una cadena, como yo, use esta función, realmente funciona.

function getHost(url)
{
    var a = document.createElement('a');
    a.href = url;
    return a.hostname;
}

Pero tenga en cuenta que si hay un subdominio (por ejemplo, www.) En la URL, se devolverá con el nombre de host. Por el contrario, si no hay subdominio, el nombre de host tampoco tendrá uno.

Vova Popov
fuente
¿Podría @Vova Popov (o alguien) aclarar la última oración? "www. ar no www."?!?
Randall Cook
2
Él está diciendo que a.hostname devolverá el www. eso es parte de tu dominio. En otras palabras, esto sería falso: getHost('http://www.google.com') == 'google.com'mientras que esto sería cierto:getHost('http://google.com') == 'google.com'
Milimétrico
9

Puede usar los siguientes códigos para obtener diferentes parámetros de la URL actual

alert("document.URL : "+document.URL);
alert("document.location.href : "+document.location.href);
alert("document.location.origin : "+document.location.origin);
alert("document.location.hostname : "+document.location.hostname);
alert("document.location.host : "+document.location.host);
alert("document.location.pathname : "+document.location.pathname);
Nimesh07
fuente
¿hay también una manera de obtener el host donde está alojado el archivo js en lugar del documento? Cajero automático. Estoy manipulando el lado del servidor de archivos js para obtener esta cadena de "conexión" que funciona pero parece ineficaz ya que preferiría un archivo js estático.
yellowsir
6

jQuery no es necesario, use javascript simple:

document.domain
Adán
fuente
tal vez no sea necesario, pero diciendo eso no estás respondiendo la pregunta
Emiliano
Sí, no soy un robot que responde la pregunta literalmente. Respondí la pregunta pragmáticamente sabiendo cuál era el objetivo final y que no necesita jQuery para alcanzar el objetivo.
Adam
Entiendo, pero ese tipo de respuesta no está completa, si quieres puedes dar una mejor respuesta
Emiliano
3

document.baseURIte da el dominio + puerto. Se usa si una etiqueta de imagen usa una ruta relativa en lugar de absoluta. Probablemente ya resuelto, pero podría ser útil para otros chicos.

jsbeckr
fuente
2
var part = location.hostname.split('.');
var subdomains = part.shift();
var upperleveldomains = part.join('.');

dominio de segundo nivel, puede usar

var sleveldomain = parts.slice(-2).join('.');
Muhammad Mohsin Muneer
fuente
1

Mira esto

alert(window.location.hostname);

esto devolverá el nombre de host como www.dominio.com

code.rider
fuente
0

Por lo que veo, nadie publicó la solución jquery sino el código JavaScript nativo.

Debe pasar la url como una cadena y obtendrá el host sin usar regexp.

function getHostFromUrl(urlString) {
    return $a = $('<a>', {
        'href': urlString
    }).prop('host');
}
Zoltán Süle
fuente
-2
//If url is something.domain.com this returns -> domain.com
function getDomain() {
  return window.location.hostname.replace(/([a-z]+.)/,"");
}
Gubatron
fuente
-4
//If url is something.domain.com this returns -> domain.com
function getDomain() {
  return window.location.hostname.replace(/([a-zA-Z0-9]+.)/,"");
}
Gubatron
fuente
3
pero si la url ya no tiene el prefijo, eliminará el nombre de dominio. Ejemplo: "stackoveflow.com" se convertirá en "com"
Filipiz
Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.- Jamie Zawinski
msangel