2010-09-09 17 views
7

Jeśli moja aplikacja jest hostowana w katalogu. Ścieżka aplikacji to nazwa katalogu.Jak uzyskać ścieżkę aplikacji za pomocą javascript

Na przykład

http://192.168.1.2/AppName/some.html

Jak uzyskać używając javascript nazwa aplikacji, jak w moim przypadku /AppName.

document.domain zwraca nazwę hosta, a document.URL zwraca cały adres URL.

EDIT

Thr aplikacja ścieżka może być bardziej skomplikowane, jak /one/two/thre/

Odpowiedz

8

Da ci to wynik, ale będzie musiał zostać zmodyfikowany, jeśli masz więcej poziomów (patrz skomentowany kod).

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

To zadziała dobrze, o ile strona nie zostanie wyświetlona z domyślnego dokumentu: 'http://192.168.1.2/AppName/ ' –

+1

Masz rację. Zaktualizowałem kod. Jednak obejmuje tylko ".html" i musiałby zostać zmodyfikowany, jeśli masz inne rozszerzenie. Może po to, żeby szukał "." byłoby wystarczające dla większości ludzi? – donohoe

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

Jest to wyraz ... po prostu skopiować i wkleić go do miejsca, gdzie trzeba, że ​​łańcuch. Lub umieść go w zmiennej, dzięki czemu możesz go używać wiele razy.

+0

Powoduje błąd. "pathName" powinno być pisane małymi literami. Nie spełnia również ścieżki aplikacji opartej na aktualizacji do pierwotnego pytania (w przeciwnym razie jest to bardzo inteligentne rozwiązanie). – donohoe

+0

Tak, oczywiście ... małe litery. Jednak nie powoduje błędu, ale zwraca niezdefiniowane. –

+0

Zaktualizowałem kod. Teraz jest w formie wyrażenia funkcji, które wykonuje i zwraca żądaną wartość ciągu znaków ... –

2

To powinno załatwić sprawę

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-głosowanie za zapewnienie jednolinijki –

+0

To zadziałało dobrze dla mojego scenariusza po tym, jak zmieniłem lastIndexOf na "/ swagger", nie jest to idealne rozwiązanie, ale najlepsze dla mojego przypadku i proste. Dziękuję za podzielenie się! –

0

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

Jeśli ścieżka jest czymś/MojaApl/...

lub

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