parts parametros obtener javascript hostname

javascript - parametros - obtener url jquery



Cómo extraer la parte del nombre de host de una URL en JavaScript (11)

¿Existe una manera realmente fácil de comenzar desde una URL completa:

document.location.href = "http://aaa.bbb.ccc.com/asdf/asdf/sadf.aspx?blah"

Y extraiga solo la parte del host:

aaa.bbb.ccc.com

Debe haber una función de JavaScript que haga esto de manera confiable, pero no puedo encontrarla.


Hay dos maneras. La primera es una variante de otra respuesta aquí, pero esta cuenta para los puertos no predeterminados:

function getRootUrl() { var defaultPorts = {"http:":80,"https:":443}; return window.location.protocol + "//" + window.location.hostname + (((window.location.port) && (window.location.port != defaultPorts[window.location.protocol])) ? (":"+window.location.port) : ""); }

Pero prefiero este método más simple (que funciona con cualquier cadena URI):

function getRootUrl(url) { return url.toString().replace(/^(.*////[^//?#]*).*$/,"$1"); }


Hay otro truco que uso y nunca vi en ninguna respuesta de : el uso del atributo "src" de una imagen producirá la ruta base completa de su sitio. Por ejemplo :

var dummy = new Image; dummy.src = ''$''; // using '''' will fail on some browsers var root = dummy.src.slice(0,-1); // remove trailing ''$''

En una URL como http://domain.com/somesite/index.html , la root se establecerá en http://domain.com/somesite/ . Esto también funciona para localhost o cualquier URL base válida.

Tenga en cuenta que esto provocará una solicitud HTTP fallida en la imagen $ dummy. Puede usar una imagen existente para evitar esto, con solo pequeños cambios de código.

Otra variante utiliza un enlace ficticio, sin efectos secundarios en las solicitudes HTTP:

var dummy = document.createElement (''a''); dummy.href = ''''; var root = dummy.href;

Sin embargo, no lo probé en todos los navegadores.


La respuesta aceptada no me funcionó ya que quería poder trabajar con cualquier URL arbitraria, no solo con la URL de la página actual.

Echa un vistazo a la URL objeto :

var url = new URL("http://aaa.bbb.ccc.com/asdf/asdf/sadf.aspx?blah"); url.protocol; // "http:" url.hostname; // "aaa.bbb.ccc.com" url.pathname; // "/asdf/asdf/sadf.aspx" url.search; // "?blah"


Me gustaría especificar algo. Si alguien quiere obtener la url completa con la ruta que necesito, puede usar:

var fullUrl = window.location.protocol + "//" + window.location.hostname + window.location.pathname;


Mira esto:

alert(window.location.hostname);

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

y:

window.location.host

devolverá el nombre de dominio con puerto como www.example.com:80

Para obtener una referencia completa, consulte el sitio del desarrollador de Mozilla .


Podría concatenar el protocolo de ubicación y el host:

var root = location.protocol + ''//'' + location.host;

Para una url, digamos ''http://.com/questions'' , devolverá ''http://.com''


Sé que es un poco tarde, pero hice una pequeña función limpia con un poco de sintaxis ES6

function getHost(href){ return Object.assign(document.createElement(''a''), { href }).host; }

También podría ser escrito en ES5 como

function getHost(href){ return Object.assign(document.createElement(''a''), { href: href }).host; }

Por supuesto, IE no admite Object.assign , pero en mi línea de trabajo, eso no importa.


Supongamos que tiene una página con esta dirección: http://sub.domain.com/virtualPath/page.htm . Usa lo siguiente en el código de la página para lograr esos resultados:

  • window.location.host : obtendrás sub.domain.com:8080 o sub.domain.com:80
  • window.location.hostname : obtendrá sub.domain.com
  • window.location.protocol : obtendrás http:
  • window.location.port : obtendrás 8080 u 80
  • window.location.pathname : obtendrá /virtualPath
  • window.location.origin : obtendrá http://sub.domain.com *****

Actualización: sobre el .origin

***** Como indica la ref , la compatibilidad del navegador para window.location.origin no está clara. Lo verifiqué en Chrome y devolví http://sub.domain.com:port si el puerto es algo menos de 80, y http://sub.domain.com si el puerto es 80.

Un agradecimiento especial a @torazaburo por mencionarme eso.


Tratar

document.location.host

o

document.location.hostname


Utilice el objeto document.location y sus propiedades de hostname o hostname .

alert(document.location.hostname); // alerts ".com"