2010-09-09 3 views
7

Si mon application est hébergée dans un répertoire. Le chemin d'application est le nom du répertoire.Comment obtenir le chemin de l'application en utilisant javascript

Par exemple

http://192.168.1.2/AppName/some.html

Comment obtenir l'aide de javascript le nom de l'application comme dans mon cas /AppName.

document.domain renvoie le nom d'hôte et document.URL renvoie l'URL complète.

EDIT

chemin d'application Thr pourrait être plus complexe, comme /one/two/thre/

Répondre

8

Cela vous donnera un résultat mais devra être modifié si vous avez plus de niveaux (voir le code commenté).

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

Cela fonctionnera bien, tant que la page n'est pas servie à partir d'un document par défaut: 'http://192.168.1.2/AppName/ ' –

+1

Vous avez raison. J'ai mis à jour le code. Cependant, il ne couvre que '.html' et devrait être modifié si vous avez une extension différente. Peut-être que vous cherchez "." serait suffisant pour la plupart des gens? – donohoe

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

Ceci est une expression ... il suffit de copier-coller à l'endroit où vous avez besoin de cette chaîne. Ou le mettre dans une variable, de sorte que vous pouvez l'utiliser plusieurs fois.

+0

Renvoie une erreur. 'pathName' devrait être en minuscules. Il ne satisfait pas non plus le chemin de l'application en fonction de la mise à jour de la question initiale (sinon une solution très intelligente). – donohoe

+0

Oui, bien sûr ... minuscules. Cependant, il ne génère pas d'erreur mais renvoie undefined. –

+0

J'ai mis à jour le code. Maintenant, il est sous la forme d'une expression de fonction qui exécute et retourne la valeur de chaîne désirée ... –

2

Cela devrait faire l'affaire

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 pour fournir un one-liner –

+0

Cela a bien fonctionné pour mon scénario après avoir changé le lastIndexOf à "/ swagger" pas une solution parfaite, mais le meilleur pour mon cas et simple. Merci pour le partage! –

0

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

Si votre chemin est quelque chose comme/myApp/...

ou

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