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 .
Da ci tablicę zawierającą wszystkie części adresu URL, do których masz dostęp jak do zwykłej tablicy.
Lub coraz bardziej eleganckie rozwiązanie sugerowane przez @Dylan, tylko z fragmentami ścieżki:
źródło
Jeśli to jest aktualny adres URL, użyj window.location.pathname, w przeciwnym razie użyj tego wyrażenia regularnego:
źródło
/.+?\:\/\/.+?(\/.+?)?(?:#|\?|)?$/
Istnieje przydatna metoda interfejsu API sieci Web o nazwie URL
źródło
Jeśli chcesz uzyskać części adresu URL, które przechowujesz w zmiennej, mogę polecić URL-Parse
Zgodnie z dokumentacją wyodrębnia następujące części:
źródło
Jeśli masz abstrakcyjny ciąg adresu URL (nie z bieżącego
window.location
), możesz użyć tej sztuczki:Dzięki jlong
źródło