2012-12-12 11 views
8

Wie kann ich den URL-Pfad der aktuellen Seite, aber ohne das letzte Segment:Get URL-Pfad ohne letztes Segment

http://www.domain.com/first/second/last 

Ich brauche nur http://www.domain.com/first/second ... mit jQuery (oder nur JavaScript)

+2

'var firstpart = url.substring (0, url.lastIndexOf ("/"))' – mplungjan

+1

@mplungjan: bitte Ihren Kommentar als Antwort hinzufügen, funktioniert diese! – albuvee

+1

Mögliches Duplikat von [Letztes Segment der URL] (http://stackoverflow.com/questions/4758103/last-segment-of-url) – Basilevs

Antwort

10

Wie OP beantragt - mit Änderungen von Kommentar

var url = document.URL, 
    shortUrl=url.substring(0,url.lastIndexOf("/")); 

dies die URL geht davon ist wahrscheinlich nicht ändern

ich document.URL da diese verwenden wird, was empfohlen wird

+0

funktioniert mit: 'var url = document.location.href, shortURL = urlstring (0, url.lastIndexOf ("/"));' – albuvee

+1

aber document.location.href ist für document.URL veraltet, daher benutze ich das – mplungjan

4

http://jsfiddle.net/KZsEW

die folgenden für alle Browser Versuchen:

var url = "http://www.domain.com/first/second/last"; // or var url = document.URL; 
var subUrl = url.substring(0,url.lastIndexOf("/")) 

alert(subUrl); 
​ 

Die Methode lastIndexOf() gibt die Position des letzten Vorkommens eines angegebenen Werts in einer Zeichenfolge zurück.

Hinweis: Die Zeichenfolge vom Ende zum Anfang gesucht wird, aber gibt den Index am Anfang beginnen, an Postion 0.

Diese Methode liefert -1, wenn der Wert für die Suche nie auftritt .

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/lastIndexOf

+1

Sie verwenden lastIndexOf für eine Zeichenfolge, nicht für ein Array, also gibt es keine müssen den Array-Prototyp modifizieren. – nxt

+0

Entschuldigung! Ich löschte, um weitere Verwirrung zu vermeiden, ich war selbst verwirrt. –

0

Ich bin mir nicht sicher, dass dies die eleganteste von Lösungen ist, aber Sie wollen nur die bis zum letzten Slash String, oder zweiter ein Schrägstrich, wenn das letzte Zeichen dauern. Hier nehme ich zuerst den Teil der URL, der nach dem Protokoll (http: // oder https: //) erscheint, so dass zum Beispiel http://stackoverflow.comhttp://stackoverflow.com zurückgegeben wird.

var url = document.URL.split('://'); 
    var last_slash; 
    var result; 
    if (url[1].charAt(url[1].length - 1) === '/') { 
     url[1] = url[1].substring(0, url[1].length - 1); 
    } 
    last_slash = url[1].lastIndexOf('/'); 
    result = url[0] + '://' + ((last_slash !== -1) ? url[1].substring(0, last_slash) : url[1]); 

edit: jsfiddle http://jsfiddle.net/CV6d4/

+0

Sie verwenden bereits Split, also warum nicht die Zeichenfolge auf "/" anstelle von ": //" aufteilen, das letzte Element aus dem Array öffnen und sie erneut verbinden. http://jsfiddle.net/8chxf/ – nxt

+0

Sie müssen es zwicken, um die Ecke Fällen, dh wenn Sie ein "/" am Ende der URL in Ihrer Lösung hinzufügen, funktioniert es nicht, und es auch funktioniert nicht auf "http://www.domain.com". – Emily

+0

document.location ist für document.URL veraltet - window.location.href ist ebenfalls gültig. – mplungjan

0

Versuchen Sie folgendes:

var url = 'http://www.domain.com/first/second/last'; 
for(var i=url.length-1; i>=0;i--){ 
    if(url[i]!='/'){ 
     url= url.substr(0,i); 
    } 
    else{ 
     alert(url); 
     break; 
    } 
}