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 .
Fornecerá uma matriz contendo todas as partes da URL, que você pode acessar como uma matriz normal.
Ou uma solução cada vez mais elegante, sugerida pelo @Dylan, com apenas as partes do caminho:
fonte
Se esse for o URL atual, use window.location.pathname, caso contrário, use esta expressão regular:
fonte
/.+?\:\/\/.+?(\/.+?)?(?:#|\?|)?$/
Existe um método útil de API da Web chamado URL
fonte
Caso você queira obter partes de um URL que você armazenou em uma variável, posso recomendar o URL-Parse
De acordo com a documentação, extrai as seguintes partes:
fonte
Se você tiver uma string de URL abstrata (não da atual
window.location
), poderá usar este truque:Graças a jlong
fonte