Hay una propiedad del window.location
objeto incorporado que proporcionará eso para la ventana actual.
// If URL is http://www.somedomain.com/account/search?filter=a#top
window.location.pathname // /account/search
// For reference:
window.location.host // www.somedomain.com (includes port if there is one)
window.location.hostname // www.somedomain.com
window.location.hash // #top
window.location.href // http://www.somedomain.com/account/search?filter=a#top
window.location.port // (empty string)
window.location.protocol // http:
window.location.search // ?filter=a
Actualice, use las mismas propiedades para cualquier URL:
Resulta que este esquema se está estandarizando como una interfaz llamada URLUtils , ¿y adivina qué? Tanto el window.location
objeto existente como los elementos de anclaje implementan la interfaz.
Para que pueda usar las mismas propiedades anteriores para cualquier URL , solo cree un ancla con la URL y acceda a las propiedades:
var el = document.createElement('a');
el.href = "http://www.somedomain.com/account/search?filter=a#top";
el.host // www.somedomain.com (includes port if there is one[1])
el.hostname // www.somedomain.com
el.hash // #top
el.href // http://www.somedomain.com/account/search?filter=a#top
el.pathname // /account/search
el.port // (port if there is one[1])
el.protocol // http:
el.search // ?filter=a
[1]: El soporte del navegador para las propiedades que incluyen el puerto no es coherente, consulte: http://jessepollak.me/chrome-was-wrong-ie-was-right
Esto funciona en las últimas versiones de Chrome y Firefox . No tengo versiones de Internet Explorer para probar, así que pruébate con el ejemplo de JSFiddle.
También hay un URL
objeto próximo que ofrecerá este soporte para las propias URL, sin el elemento de anclaje. Parece que no hay navegadores estables que lo admitan en este momento, pero se dice que vendrá en Firefox 26. Cuando creas que podrías tener soporte para él, pruébalo aquí .
Le dará una matriz que contiene todas las partes de URL, a las que puede acceder como una matriz normal.
O una solución cada vez más elegante sugerida por @Dylan, con solo las partes del camino:
fuente
Si esta es la url actual, use window.location.pathname; de lo contrario, use esta expresión regular:
fuente
/.+?\:\/\/.+?(\/.+?)?(?:#|\?|)?$/
Existe un método útil de API web llamado URL
fuente
En caso de que desee obtener partes de una URL que haya almacenado en una variable, puedo recomendar URL-Parse
Según la documentación, extrae las siguientes partes:
fuente
Si tiene una cadena de URL abstracta (no de la actual
window.location
), puede usar este truco:Gracias a jlong
fuente