Chciałbym wziąć sznurek
var a = "http://example.com/aa/bb/"
i przetworzyć w obiekt taki, że
a.hostname == "example.com"
i
a.pathname == "/aa/bb"
javascript
url
freddiefujiwara
źródło
źródło
hostname
ipathname
bezpośrednio zlocation
obiektu.Odpowiedzi:
Nowoczesny sposób:
Zwraca obiekt o właściwościach
hostname
ipathname
wraz z kilkoma innymi .Pierwszy argument to względny lub bezwzględny adres URL; jeśli jest względny, musisz podać drugi argument (podstawowy adres URL). Na przykład dla adresu URL względem bieżącej strony:
Oprócz przeglądarek ten interfejs API jest również dostępny w Node.js od wersji 7, poprzez
require('url').URL
.źródło
new URL('/stuff?foo=bar#baz')
->SyntaxError: Failed to construct 'URL': Invalid URL
źródło
pathname
usuwa wiodący ukośnik, podczas gdy inne przeglądarki tego nie robią. Skończysz z/path
lubpath
, w zależności od przeglądarki.znalezione tutaj: https://gist.github.com/jlong/2428561
źródło
parser = location;
i wszystkie kolejne linie działają. Wypróbowałem to teraz w Chrome i IE9.pathname
nie zawiera wiodącego ukośnika w IE. Domyśl. : Dhttp:
nawet jeśli przejdziesz tylkodomain.com
do href (bez protokołu). Chciałem tego użyć, aby sprawdzić, czy protokół nie istnieje, a jeśli tak, mógłbym go dodać, ale zakłada, że http: więc nie mogłem go użyć do tego celu.Oto prosta funkcja wykorzystująca wyrażenie regularne imitujące
a
zachowanie tagu.Plusy
Cons
-
-
EDYTOWAĆ:
Oto podział wyrażeń regularnych
źródło
zwraca currentUrl.
Jeśli chcesz przekazać swój ciąg jako adres URL ( nie działa w IE11 ):
Następnie możesz go przeanalizować w następujący sposób:
źródło
Odpowiedź freddiefujiwara jest całkiem dobra, ale potrzebowałem również obsługi względnych adresów URL w przeglądarce Internet Explorer. Wymyśliłem następujące rozwiązanie:
Teraz użyj go, aby uzyskać potrzebne właściwości:
Przykład JSFiddle: http://jsfiddle.net/6AEAB/
źródło
var locationHost = (location.port !== '80' && location.port !== '443') ? location.host : location.hostname;
var locationOrigin = location.protocol + '//' + locationHost;
js-uri (dostępny w Google Code) pobiera ciąg URL i rozwiązuje z niego obiekt URI:
źródło
Co z prostym wyrażeniem regularnym?
źródło
//user:[email protected]/path/x?y=z
a zobaczysz, dlaczego proste wyrażenie regularne go nie wycina. Teraz wrzuć do niego coś nieważnego, a on też powinien wyskoczyć w przewidywalny sposób.dzisiaj spotykam ten problem i znalazłem: URL - interfejsy API sieci MDN
Ten zwrot:
Mam nadzieję, że mój pierwszy wkład pomoże ci!
źródło
Oto wersja, którą skopiowałem z https://gist.github.com/1847816 , ale przepisałem, aby łatwiej było ją czytać i debugować. Celem kopiowania danych kotwicy do innej zmiennej o nazwie „wynik” jest to, że dane kotwicy są dość długie, a zatem skopiowanie ograniczonej liczby wartości do wyniku pomoże uprościć wynik.
źródło
Analiza składni adresów URL w różnych przeglądarkach , działa wokół problemu ścieżki względnej dla IE 6, 7, 8 i 9:
Użycie ( demo JSFiddle tutaj ):
Wynik:
źródło
Dla tych, którzy szukają nowoczesnego rozwiązania, które działa w IE, Firefox i Chrome:
Żadne z tych rozwiązań korzystających z elementu hiperłącza nie będzie działać tak samo w chrome.Jeśli przekażesz nieprawidłowy (lub pusty) adres URL do chrome, zawsze zwróci host, z którego skrypt jest wywoływany. W IE będziesz pusty, podczas gdy w Chrome dostaniesz localhost (lub cokolwiek innego).
Jeśli próbujesz spojrzeć na osobę polecającą, jest to kłamliwe. Musisz się upewnić, że host, który odzyskasz, znajduje się w oryginalnym adresie URL, aby sobie z tym poradzić:
źródło
Sposób AngularJS - skrzypce tutaj: http://jsfiddle.net/PT5BG/4/
źródło
$document
i$window
usługProste i niezawodne rozwiązanie z wykorzystaniem wzorca modułu. Obejmuje to poprawkę dla IE, w której
pathname
nie zawsze ma wiodący ukośnik (/
).Stworzyłem Gist wraz z JSFiddle, który oferuje bardziej dynamiczny parser. Polecam to sprawdzić i wyrazić opinię.
Próbny
Pokaż fragment kodu
Wynik
źródło
Użyj https://www.npmjs.com/package/uri-parse-lib tego
źródło
Dlaczego tego nie używać?
źródło
Możesz także użyć
parse_url()
funkcji z projektu Locutus (wcześniej php.js).Kod:
Wynik:
źródło
Działa zarówno z bezwzględnymi, jak i względnymi adresami URL
źródło
abc://username:[email protected]:123/path/data?key=value&key2=value2#fragid1
Przestań wymyślać koło ponownie. Posługiwać się https://github.com/medialize/URI.js/
źródło
Wystarczy użyć biblioteki url.js (dla stron WWW i node.js).
https://github.com/websanova/js-url
źródło
prosty hack z pierwszą odpowiedzią
można tego użyć nawet bez argumentu, aby obliczyć bieżącą nazwę hosta getLocation (). nazwa hosta da bieżącą nazwę hosta
źródło