Jak uzyskać ostatni segment adresu URL? Mam następujący skrypt, który wyświetla pełny adres URL klikniętego tagu kotwicy:
$(".tag_name_goes_here").live('click', function(event)
{
event.preventDefault();
alert($(this).attr("href"));
});
Jeśli adres URL to
http://mywebsite/folder/file
w jaki sposób mogę tylko wyświetlać część adresu URL pliku w polu alertu?
javascript
jquery
oshirowanen
źródło
źródło
Odpowiedzi:
Możesz także użyć funkcji lastIndexOf (), aby zlokalizować ostatnie wystąpienie
/
znaku w adresie URL, a następnie funkcji substring (), aby zwrócić podciąg zaczynający się od tej lokalizacji:W ten sposób unikniesz tworzenia tablicy zawierającej wszystkie segmenty adresów URL
split()
.źródło
admin/store/tour/-1/
, to będzie''
ciąg znaków?/
na końcu?/
na końcu:var url = window.location.href.replace(/\/$/, ''); /* remove optional end / */ var lastSeg = url.substr(url.lastIndexOf('/') + 1);
źródło
http://mywebsite/folder/file/
"" == false
w takim przypadku wyskakuje część tablicy z pustym ciągiemźródło
/
.console.log(history.location.pathname.split("/").pop())
Jeśli istnieje lepszy sposób, chciałbym wiedzieć! Mam nadzieję, że ten komentarz może zachęcić więcej osób do odpowiedzi. Dzięki @ Dblock247.../file?var=value&foo=bar
.). To rozwiązanie rozwiązuje ten problem w bardziej niezawodny i nowoczesny sposób: stackoverflow.com/a/51795122/1123743Kolejne rozwiązanie z regex.
źródło
JavaScript ma funkcję podziału skojarzoną z obiektem łańcuchowym, która może ci pomóc:
źródło
Inne odpowiedzi mogą działać, jeśli ścieżka jest prosta i składa się tylko z prostych elementów ścieżki. Ale kiedy zawiera również parametry zapytania, łamią się.
Lepiej użyj do tego celu obiektu URL, aby uzyskać bardziej niezawodne rozwiązanie. Jest to parsowana interpretacja obecnego adresu URL:
Wejście:
const href = 'https://stackoverflow.com/boo?q=foo&s=bar'
Wynik:
'boo'
Działa to we wszystkich popularnych przeglądarkach. Tylko nasza umierająca IE nie obsługuje tego (i nie będzie). W przypadku IE dostępne są jednak wieloskładniki (jeśli w ogóle Ci zależy ).
źródło
Lub możesz użyć wyrażenia regularnego:
źródło
alert(window.location.href.replace(/\/$/, '').replace(/.*//, ''))
źródło
Wiem, że jest już za późno, ale dla innych: zdecydowanie polecam użycie wtyczki jquery PURL . Motywacją dla PURL jest to, że adres URL można również segmentować według „#” (przykład: linki angular.js), tzn. URL może wyglądać
lub
Dzięki PURL możesz łatwo zdecydować (segment / fsegment), który segment chcesz uzyskać.
Dla „klasycznego” ostatniego segmentu możesz napisać:
źródło
Opierając się na odpowiedzi Frédérica używając tylko javascript:
źródło
Również,
źródło
Jeśli nie martwisz się generowaniem dodatkowych elementów za pomocą podziału, filtr może rozwiązać problem, o którym wspomniałeś o ukośniku końcowym (Zakładając, że masz obsługę filtra dla przeglądarki).
źródło
targetValue = jeden
Jeśli Twój adres URL wygląda następująco:
lub
lub
Następnie loc wygląda tak: http://test.com/one
Teraz, ponieważ chcesz ostatni element, uruchom następny krok, aby załadować wartość (targetValue), którą pierwotnie chciałeś.
źródło
search
lubhash
.Użyj
pathname
właściwości macierzystej, ponieważ jest ona najprostsza i została już przeanalizowana i rozwiązana przez przeglądarkę.$(this).attr("href")
może zwracać wartości,../..
które nie dawałyby poprawnego wyniku.Jeśli chcesz zachować
search
ihash
(np.foo?bar#baz
Przedhttp://quux.com/path/to/foo?bar#baz
) użyj tego:źródło
pathname
usuwa parametry zapytania, alehref
nie.Aby uzyskać ostatni segment bieżącego okna:
window.location.href.substr(window.location.href.lastIndexOf('/') +1)
źródło
możesz najpierw usunąć, jeśli jest / na końcu, a następnie pobrać ostatnią część adresu URL
źródło
Zwraca ostatni segment, niezależnie od końcowych ukośników:
źródło
path.sep
nie dosłownego ukośnika. Zobacz nodejs.org/api/path.html#path_path_sep . Dzięki temu Twój kod będzie przenośny w różnych systemach operacyjnych.Skopiowano z tej odpowiedzi
źródło
Zaktualizowana odpowiedź raddevus:
Wyświetla ostatnią ścieżkę adresu URL jako ciąg znaków:
źródło
Uważam, że bezpieczniej jest usunąć ukośnik ('/') przed wykonaniem podciągów. Ponieważ w moim scenariuszu mam pusty ciąg.
źródło
Używam wyrażeń regularnych i dzielenia:
var last_path = location.href.match (/. / (. [\ w]) /) [1] .split ("#") [0] .split ("?") [0]
W końcu zignoruje #? i / / końcowe adresy URL, co się często zdarza. Przykład:
https://cardsrealm.com/profile/cardsRealm -> Zwraca kartyRealm
https://cardsrealm.com/profile/cardsRealm#hello -> Zwraca kartyRealm
https://cardsrealm.com/profile/cardsRealm?hello -> Zwraca kartyRealm
https://cardsrealm.com/profile/cardsRealm/ -> Zwraca kartyRealm
źródło
Naprawdę nie wiem, czy wyrażenie regularne jest właściwym sposobem rozwiązania tego problemu, ponieważ może naprawdę wpłynąć na wydajność Twojego kodu, ale poniższe wyrażenie pomoże ci pobrać ostatni segment i nadal da ci ostatni segment, nawet jeśli adres URL następuje pusta
/
. Wyrażenie, które wymyśliłem to:źródło
Pracuje dla mnie.
źródło
Wiem, że jest stary, ale jeśli chcesz uzyskać go z adresu URL, możesz po prostu użyć:
document.location.pathname
pobiera nazwę ścieżki z bieżącego adresu URL.lastIndexOf
pobierz indeks ostatniego wystąpienia następującego Regex, w naszym przypadku jest/.
. Kropka oznacza dowolny znak, dlatego nie będzie się liczyć, jeśli/
będzie to ostatni znak w adresie URL.substring
przetnie łańcuch między dwoma indeksami.źródło
jeśli adres URL jest
http://localhost/madukaonline/shop.php?shop=79
console.log(location.search);
przyniesie?shop=79
więc najprostszym sposobem jest użycie location.search
możesz znaleźć więcej informacji tutaj i tutaj
źródło
Możesz to zrobić za pomocą prostych zapytań o ścieżki (w / 0) itp.
Przyznane prawdopodobnie zbyt skomplikowane i prawdopodobnie mało wydajne, ale chciałem wykorzystać to
reduce
dla zabawy.źródło