Me gustaria tomar una cuerda
var a = "http://example.com/aa/bb/"
y procesarlo en un objeto tal que
a.hostname == "example.com"
y
a.pathname == "/aa/bb"
javascript
url
freddiefujiwara
fuente
fuente
hostname
ypathname
directamente desde ellocation
objeto.Respuestas:
La forma moderna:
Devuelve un objeto con propiedades
hostname
ypathname
, junto con algunos otros .El primer argumento es una URL relativa o absoluta; si es relativo, debe especificar el segundo argumento (la URL base). Por ejemplo, para una URL relativa a la página actual:
Además de los navegadores, esta API también está disponible en Node.js desde v7 hasta
require('url').URL
.fuente
new URL('/stuff?foo=bar#baz')
->SyntaxError: Failed to construct 'URL': Invalid URL
fuente
pathname
elimina la barra inclinada principal, mientras que los otros navegadores no. Entonces terminará con/path
opath
, dependiendo de su navegador.encontrado aquí: https://gist.github.com/jlong/2428561
fuente
parser = location;
y todas las líneas siguientes funcionan. Lo probé en Chrome e IE9 justo ahora.pathname
no incluye la barra inclinada principal en IE. Imagínate. : Dhttp:
incluso si pasa solodomain.com
a href (sin ningún protocolo). Quería usar esto para verificar si faltaba el protocolo y, de ser así, podría agregarlo, pero supone que http: por lo tanto, no pude usarlo para este propósito.Aquí hay una función simple que usa una expresión regular que imita el
a
comportamiento de etiqueta.Pros
Contras
-
-
EDITAR:
Aquí hay un desglose de la expresión regular
fuente
devuelve el currentUrl.
Si desea pasar su propia cadena como una URL ( no funciona en IE11 ):
Entonces puedes analizarlo como:
fuente
La respuesta de freddiefujiwara es bastante buena, pero también necesitaba admitir URL relativas dentro de Internet Explorer. Se me ocurrió la siguiente solución:
Ahora úselo para obtener las propiedades necesarias:
Ejemplo de JSFiddle: http://jsfiddle.net/6AEAB/
fuente
var locationHost = (location.port !== '80' && location.port !== '443') ? location.host : location.hostname;
var locationOrigin = location.protocol + '//' + locationHost;
js-uri (disponible en Google Code) toma una URL de cadena y resuelve un objeto URI a partir de ella:
fuente
¿Qué pasa con la expresión regular simple?
fuente
//user:[email protected]/path/x?y=z
y verá por qué la expresión regular simple no lo corta. Ahora, arroje algo inválido y también debería rescatarse de manera predecible.hoy me encuentro con este problema y encontré: URL - API web MDN
Este regreso:
¡Espero que mi primera contribución te ayude!
fuente
Aquí hay una versión que copié de https://gist.github.com/1847816 , pero la reescribí para que sea más fácil de leer y depurar. El propósito de copiar los datos de anclaje a otra variable llamada "resultado" es porque los datos de anclaje son bastante largos, por lo que copiar un número limitado de valores al resultado ayudará a simplificar el resultado.
fuente
El análisis de URL de navegador cruzado , resuelve el problema de ruta relativa para IE 6, 7, 8 y 9:
Uso ( demostración JSFiddle aquí ):
Resultado:
fuente
Para aquellos que buscan una solución moderna que funcione en IE, Firefox y Chrome:
Ninguna de estas soluciones que usan un elemento de hipervínculo funcionará igual en Chrome.Si pasa una URL no válida (o en blanco) a Chrome, siempre devolverá el host desde donde se llama el script. Entonces, en IE, quedará en blanco, mientras que en Chrome obtendrá localhost (o lo que sea).
Si está tratando de mirar al referente, esto es engañoso. Deberás asegurarte de que el host que recibiste estaba en la URL original para lidiar con esto:
fuente
La forma AngularJS: violín aquí: http://jsfiddle.net/PT5BG/4/
fuente
$document
y$window
serviciosSolución simple y robusta utilizando el patrón del módulo. Esto incluye una solución para IE donde
pathname
no siempre tiene una barra diagonal (/
).He creado un Gist junto con un JSFiddle que ofrece un analizador más dinámico. Le recomiendo que lo revise y envíe sus comentarios.
Manifestación
Mostrar fragmento de código
Salida
fuente
Use https://www.npmjs.com/package/uri-parse-lib para esto
fuente
¿Por qué no lo usas?
fuente
También puede usar la
parse_url()
función del proyecto Locutus (anteriormente php.js).Código:
Resultado:
fuente
Funciona con URL absolutas y relativas.
fuente
abc://username:[email protected]:123/path/data?key=value&key2=value2#fragid1
Deja de reinventar la rueda. Use https://github.com/medialize/URI.js/
fuente
Simplemente use la biblioteca url.js (para web y node.js).
https://github.com/websanova/js-url
fuente
un simple truco con la primera respuesta
esto puede usarse incluso sin argumento para averiguar el nombre de host actual getLocation (). hostname dará el nombre de host actual
fuente