Wie erhalte ich das letzte Segment einer URL? Ich habe das folgende Skript, das die vollständige URL des angeklickten Ankertags anzeigt:
$(".tag_name_goes_here").live('click', function(event)
{
event.preventDefault();
alert($(this).attr("href"));
});
Wenn die URL ist
http://mywebsite/folder/file
Wie kann ich nur den "Datei" -Teil der URL im Warnfeld anzeigen?
javascript
jquery
oshirowanen
quelle
quelle
Antworten:
Sie können auch die Verwendung lastIndexOf () Funktion das letzte Vorkommen der lokalisieren
/
Zeichen in der URL, dann ist die substring () Funktion des Teil von dieser Position beginnen zurückzukehren:Auf diese Weise vermeiden Sie, dass ein Array erstellt wird, das alle Ihre URL-Segmente
split()
enthält.quelle
admin/store/tour/-1/
, wäre es eine''
Zeichenfolge?/
am Ende ein enthält ?/
am Ende ein enthält :var url = window.location.href.replace(/\/$/, ''); /* remove optional end / */ var lastSeg = url.substr(url.lastIndexOf('/') + 1);
quelle
http://mywebsite/folder/file/
"" == false
In diesem Fall wird der Teil des Arrays mit der leeren Zeichenfolgequelle
/
.console.log(history.location.pathname.split("/").pop())
Wenn es einen besseren Weg gibt, würde ich gerne wissen! Hoffentlich kann dieser Kommentar mehr Menschen zu Ihrer Antwort führen. Danke @ Dblock247.../file?var=value&foo=bar
. B. ). Diese Lösung löst dieses Problem auf robustere und modernere Weise: stackoverflow.com/a/51795122/1123743Nur eine andere Lösung mit Regex.
quelle
Javascript verfügt über die dem Zeichenfolgenobjekt zugeordnete Funktionsaufteilung, die Ihnen helfen kann:
quelle
Die anderen Antworten können funktionieren, wenn der Pfad einfach ist und nur aus einfachen Pfadelementen besteht. Aber wenn es auch Abfrageparameter enthält, brechen sie.
Verwenden Sie stattdessen besser ein URL- Objekt, um eine robustere Lösung zu erhalten. Es ist eine analysierte Interpretation der vorliegenden URL:
Eingang:
const href = 'https://stackoverflow.com/boo?q=foo&s=bar'
Ausgabe:
'boo'
Dies funktioniert für alle gängigen Browser. Nur unser sterbender IE unterstützt das nicht (und wird es auch nicht). Für IE gibt es jedoch eine Polyfüllung (wenn Sie sich überhaupt darum kümmern ).
quelle
Oder Sie könnten einen regulären Ausdruck verwenden:
quelle
alert(window.location.href.replace(/\/$/, '').replace(/.*//, ''))
quelle
Ich weiß, es ist zu spät, aber für andere: Ich empfehle dringend , das PURL jquery Plugin zu verwenden . Die Motivation für PURL ist, dass die URL auch nach '#' segmentiert werden kann (Beispiel: angle.js links), dh die URL könnte so aussehen
oder
Und mit PURL können Sie einfach entscheiden (Segment / Segment), welches Segment Sie erhalten möchten.
Für "klassisches" letztes Segment könnte man schreiben:
quelle
Aufbauend auf Frédérics Antwort, die nur Javascript verwendet:
quelle
Ebenfalls,
quelle
Wenn Sie sich keine Sorgen darüber machen, die zusätzlichen Elemente mithilfe der Aufteilung zu generieren, kann der Filter das von Ihnen erwähnte Problem mit dem abschließenden Schrägstrich lösen (vorausgesetzt, Sie haben Browserunterstützung für Filter).
quelle
targetValue = eins
Wenn Ihre URL so aussieht:
oder
oder
Dann sieht loc wie folgt aus : http://test.com/one
Führen Sie nun, da Sie das letzte Element möchten, den nächsten Schritt aus, um den ursprünglich gewünschten Wert (targetValue) zu laden.
quelle
search
oderhash
.Verwenden Sie die native
pathname
Eigenschaft, da sie am einfachsten ist und bereits vom Browser analysiert und aufgelöst wurde.$(this).attr("href")
kann Werte zurückgeben,../..
die nicht das richtige Ergebnis liefern würden.Wenn Sie das
search
undhash
(z. B.foo?bar#baz
vonhttp://quux.com/path/to/foo?bar#baz
) verwenden müssen, verwenden Sie Folgendes :quelle
pathname
Abfrageparameter entfernt werden, dies jedochhref
nicht.So rufen Sie das letzte Segment Ihres aktuellen Fensters ab:
window.location.href.substr(window.location.href.lastIndexOf('/') +1)
quelle
Gibt das letzte Segment zurück, unabhängig von nachgestellten Schrägstrichen:
quelle
path.sep
keinen wörtlichen Schrägstrich verwenden. Siehe nodejs.org/api/path.html#path_path_sep . Dadurch bleibt Ihr Code für alle Betriebssysteme portierbar.Von dieser Antwort kopiert
quelle
Sie können zuerst entfernen, ob / am Ende vorhanden ist, und dann den letzten Teil der URL abrufen
quelle
Raddevus Antwort aktualisiert:
Druckt den letzten Pfad der URL als Zeichenfolge:
quelle
Ich glaube, es ist sicherer, den Schrägstrich ('/') vor dem Teilstring zu entfernen. Weil ich in meinem Szenario eine leere Zeichenfolge habe.
quelle
Ich benutze Regex und Split:
var last_path = location.href.match (/. / (. [\ w]) /) [1] .split ("#") [0] .split ("?") [0]
Am Ende wird #? & / Ending URLs, was sehr oft vorkommt. Beispiel:
https://cardsrealm.com/profile/cardsRealm -> Gibt cardRealm zurück
https://cardsrealm.com/profile/cardsRealm#hello -> Gibt cardRealm zurück
https://cardsrealm.com/profile/cardsRealm?hello -> Gibt cardRealm zurück
https://cardsrealm.com/profile/cardsRealm/ -> Gibt cardRealm zurück
quelle
Ich weiß nicht genau, ob Regex der richtige Weg ist, um dieses Problem zu lösen, da es die Effizienz Ihres Codes wirklich beeinträchtigen kann, aber der folgende Regex hilft Ihnen beim Abrufen des letzten Segments und gibt Ihnen auch dann das letzte Segment, wenn die URL angegeben ist wird von einem leeren gefolgt
/
. Der Regex, den ich mir ausgedacht habe, ist:quelle
Funktioniert bei mir.
quelle
Ich weiß, dass es alt ist, aber wenn Sie dies von einer URL erhalten möchten, können Sie einfach verwenden:
document.location.pathname
Ruft den Pfadnamen von der aktuellen URL ab.lastIndexOf
Holen Sie sich den Index des letzten Auftretens des folgenden Regex, in unserem Fall ist/.
. Der Punkt bedeutet ein beliebiges Zeichen, daher zählt er nicht, wenn dies/
das letzte Zeichen in der URL ist.substring
schneidet die Zeichenfolge zwischen zwei Indizes.quelle
wenn die URL ist
http://localhost/madukaonline/shop.php?shop=79
console.log(location.search);
wird bringen?shop=79
Der einfachste Weg ist also, location.search zu verwenden
Weitere Informationen finden Sie hier und hier
quelle
Sie können dies mit einfachen Pfaden (w / 0) Querystrings usw. tun.
Zugegeben, wahrscheinlich zu komplex und wahrscheinlich nicht performant, aber ich wollte es
reduce
zum Spaß verwenden.quelle