2010-09-09 30 views
7

Uygulamamın bir dizinde barındırılıyorsa. Uygulama yolu dizin adıdır. Uygulama yolunu javascript kullanarak edinme

http://192.168.1.2/AppName/some.html

Örneğin

için

kullanarak almak nasıl benim durumumda /AppName gibi javascript uygulama adı.

document.domain ana makine adını döndürüyor ve document.URL tüm URL'yi döndürüyor.

DÜZENLEME

Thr uygulaması yolu sadece o dizeyi gereken yere kopyalayıp yapıştırın ... /one/two/thre/

cevap

8

Bu size bir sonuç verecektir, ancak daha fazla düzeyiniz varsa, değiştirilmeniz gerekecektir (bkz. Yorumlanmış 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

Bu sayfa, varsayılan bir belgeden sunulmadığı sürece iyi çalışır: 'http://192.168.1.2/AppName/ –

+1

Haklısınız. Kodu güncelledim. Bununla birlikte, yalnızca '.html'yi kapsar ve farklı bir uzantınız varsa değiştirilmelidir. Belki de buna bakmak '.' çoğu insan için yeterli olur mu? – donohoe

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

Bu bir ifadesidir gibi daha karmaşık olabilir. Veya bir değişkene koyun, böylece birden çok kez kullanabilirsiniz.

+0

Bir hata döndürür. 'pathName' tüm küçük harf olmalıdır. Ayrıca, orijinal soruya güncellemeye dayanan uygulama yolunu da karşılamıyor (aksi takdirde çok akıllı bir çözüm). – donohoe

+0

Evet, tabiki ... küçük harf. Ancak, bir hata atmaz, ancak tanımsız olarak döner. –

+0

Kodu güncelledim. Şimdi istenen dize değerini yürüten ve döndüren bir işlev ifadesi biçimindedir ... –

2

Bu/... hile

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

Tek liner sağlamak için oylama –

+0

Bu, sonIndexOf değerini "/ swagger" olarak değiştirdikten sonra senaryo için kullanışlıdır, ancak mükemmel bir çözüm değil, benim durumum ve basit için en iyisi. Paylaşım için teşekkürler! –

0

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

Yolunuz/myapp gibi bir şey ise yapmalıyım

veya

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