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ássub.domain.com:8080
osub.domain.com:80
-
window.location.hostname
: obtendrásub.domain.com
-
window.location.protocol
: obtendráshttp:
-
window.location.port
: obtendrás8080
u80
-
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"
utilizar
window.location.origin
y para: " http://aaa.bbb.ccc.ddd.com/sadf.aspx?blah "
obtendrá: http://aaa.bbb.ccc.ddd.com/