Istnieje właściwość obiektu wbudowanego window.location
, która zapewni to dla bieżącego okna.
// 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
Zaktualizuj, użyj tych samych właściwości dla każdego adresu URL:
Okazuje się, że ten schemat jest standaryzowany jako interfejs o nazwie URLUtils , i wiecie co? Interfejs implementuje zarówno istniejący window.location
obiekt, jak i elementy zakotwiczenia .
Możesz więc użyć tych samych właściwości powyżej dla dowolnego adresu URL - po prostu utwórz kotwicę z adresem URL i uzyskaj dostęp do właściwości:
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]: Obsługa przeglądarek dla właściwości zawierających port nie jest spójna, patrz: http://jessepollak.me/chrome-was-wrong-ie-was-right
Działa to w najnowszych wersjach Chrome i Firefox . Nie mam wersji przeglądarki Internet Explorer do przetestowania, więc sprawdź się na przykładzie JSFiddle.
Jest też nadchodzący URL
obiekt, który będzie oferował wsparcie dla samych adresów URL, bez elementu zakotwiczenia. Wygląda na to, że w tej chwili żadna stabilna przeglądarka go nie obsługuje, ale mówi się, że pojawi się w Firefoksie 26. Jeśli myślisz, że możesz go obsługiwać, wypróbuj go tutaj .