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í .