2010-09-09 17 views
7

Se la mia applicazione è ospitata in una directory. Il percorso dell'applicazione è il nome della directory.Come ottenere il percorso dell'applicazione utilizzando javascript

Per esempio

http://192.168.1.2/AppName/some.html

Come ottenere utilizzando JavaScript il nome dell'applicazione come nel mio caso /AppName.

document.domain restituisce il nome host e document.URL restituisce l'intero Url.

EDIT

Thr percorso applicazione potrebbe essere più complessa, come /one/two/thre/

risposta

8

Questo ti darà un risultato ma dovrebbe essere modificato se hai più livelli (vedi codice commentato).

var path = location.pathname.split('/'); 
if (path[path.length-1].indexOf('.html')>-1) { 
    path.length = path.length - 1; 
} 
var app = path[path.length-2]; // if you just want 'three' 
// var app = path.join('/'); // if you want the whole thing like '/one/two/three' 
console.log(app); 
+0

Che funzionerà correttamente, purché la pagina non sia pubblicata da un documento predefinito: 'http://192.168.1.2/AppName/ ' –

+1

Hai ragione. Ho aggiornato il codice. Tuttavia copre solo '.html' e dovrebbe essere modificato se si dispone di un'estensione diversa. Forse averlo cercato '.' sarebbe abbastanza per la maggior parte delle persone? – donohoe

2
(function(p) { 
    var s = p.split("/").reverse(); 
    s.splice(0, 1); 
    return s.reverse().join("/"); 
})(location.pathname) 

Questa è un'espressione ... basta copiare-incollare al luogo in cui è necessario che stringa. Oppure mettilo in una variabile, in modo che tu possa usarlo più volte.

+0

Restituisce un errore. 'pathName' dovrebbe essere tutto in minuscolo. Inoltre, non soddisfa il percorso dell'app basato sull'aggiornamento alla domanda originale (altrimenti una soluzione molto intelligente). – donohoe

+0

Sì, ovviamente ... in minuscolo. Tuttavia, non genera un errore, ma restituisce undefined. –

+0

Ho aggiornato il codice. Ora è sotto forma di un'espressione di funzione che esegue e restituisce il valore di stringa desiderato ... –

2

Questo dovrebbe fare il trucco

function getAppPath() { 
    var pathArray = location.pathname.split('/'); 
    var appPath = "/"; 
    for(var i=1; i<pathArray.length-1; i++) { 
     appPath += pathArray[i] + "/"; 
    } 
    return appPath; 
} 

alert(getAppPath()); 
9
window.location.pathname.substr(0, window.location.pathname.lastIndexOf('/')) 
+0

Up-vote per fornire un one-liner –

+0

Questo ha funzionato bene per il mio scenario dopo aver cambiato l'ultimoIndexOf in "/ swagger" non è una soluzione perfetta, ma il migliore per il mio caso e semplice. Grazie per aver condiviso! –

0

alert("/"+location.pathname.split('/')[1]);

Se il vostro percorso è qualcosa di simile/frontend/...

o

function applicationContextPath() { 
    if (location.pathname.split('/').length > 1) 
     return "/" + location.pathname.split('/')[1]; 
    else 
     return "/"; 
} 
alert(applicationContextPath); 
Problemi correlati