Há uma propriedade do window.location
objeto interno que fornecerá isso para a janela atual.
// 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
Atualização, use as mesmas propriedades para qualquer URL:
Acontece que esse esquema está sendo padronizado como uma interface chamada URLUtils , e adivinhem? O window.location
objeto existente e os elementos âncora implementam a interface.
Portanto, você pode usar as mesmas propriedades acima para qualquer URL - basta criar uma âncora com a URL e acessar as propriedades:
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]: O suporte do navegador para as propriedades que incluem a porta não é consistente. Consulte: http://jessepollak.me/chrome-was-wrong-ie-was-right
Isso funciona nas versões mais recentes do Chrome e Firefox . Não tenho versões do Internet Explorer para testar; portanto, teste-se com o exemplo do JSFiddle.
Também existe um URL
objeto que oferecerá esse suporte para os próprios URLs, sem o elemento anchor. Parece que não há navegadores estáveis para suportá-lo no momento, mas diz-se que está chegando no Firefox 26. Quando você acha que pode ter suporte para ele, tente aqui .