2012-12-12 41 views
8

Come posso ottenere il percorso URL del sito attuale, ma senza l'ultimo segmento:ottenere il percorso URL senza ultimo segmento

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

ho solo bisogno http://www.domain.com/first/second ... con jQuery (o solo JavaScript)

+2

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

+1

@mplungjan: si prega di inserire il tuo commento come risposta, questo funziona! – albuvee

+1

Possibile duplicato di [Ultimo segmento di URL] (http://stackoverflow.com/questions/4758103/last-segment-of-url) – Basilevs

risposta

10

Come richiesto dal OP - con le modifiche commento

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

questo presuppone l'URL non è destinata a cambiare

Io uso document.URL dato che questo è ciò che è raccomandato

+0

funziona con: 'var url = document.location.href, shortURL = url.substring (0, url.lastIndexOf ("/"));' – albuvee

+1

ma document.location.href è deprecato per document.URL, quindi lo uso – mplungjan

4

http://jsfiddle.net/KZsEW

Prova quanto segue per tutti i browser:

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

alert(subUrl); 
​ 

Il metodo lastIndexOf() restituisce la posizione dell'ultima occorrenza di un valore specificato in una stringa.

Nota: La stringa viene ricercato dalla fine all'inizio, ma restituisce l'indice a partire dall'inizio, al postion 0.

Questo metodo restituisce -1 se il valore per la ricerca di non si verifica .

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

+1

Stai utilizzando lastIndexOf su una stringa, non su una matrice, quindi non c'è è necessario modificare il prototipo dell'array. – nxt

+0

Siamo spiacenti! Ho cancellato per fermare ogni altra confusione, ero confuso da solo. –

0

io non sono sicuro che questo è il più elegante di soluzioni, ma si vuole solo la sottostringa fino all'ultimo barra, o penultima se l'ultimo carattere è una barra. Qui prima prendo la parte dell'URL che appare dopo il protocollo (http: // o https: //) in modo che, ad esempio, per http://stackoverflow.com restituisca http://stackoverflow.com.

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

Stai già utilizzando lo split, quindi perché non dividere la stringa su "/" anziché ": //", fai scoppiare l'ultimo elemento dell'array e unirli nuovamente. http://jsfiddle.net/8chxf/ – nxt

+0

Dovresti modificarlo per ottenere i casi d'angolo, cioè se aggiungi un "/" alla fine dell'URL nella soluzione non funziona, e anche non funziona su "http://www.dominio.com". – Emily

+0

document.location è deprecato per document.URL - window.location.href è anche valido. – mplungjan

0

Prova questo:

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; 
    } 
} 
Problemi correlati