2010-09-09 29 views
7

Si tengo mi aplicación alojada en un directorio. La ruta de la aplicación es el nombre del directorio.Cómo obtener la ruta de la aplicación usando javascript

Por ejemplo

http://192.168.1.2/AppName/some.html

Como llegar usando javascript el nombre de la aplicación como en mi caso /AppName.

document.domain está devolviendo el nombre de host y document.URL está devolviendo la URL completa.

EDITAR

ruta aplicación Thr podría ser más compleja, como /one/two/thre/

Respuesta

8

Esto le dará un resultado, pero tendría que ser modificado si tiene más niveles (vea el código comentado).

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

Eso funcionará bien, siempre que la página no se publique desde un documento predeterminado: 'http://192.168.1.2/AppName/ ' –

+1

Tienes razón. He actualizado el código. Sin embargo, solo cubre '.html' y debería modificarse si tiene una extensión diferente. Quizás tener que buscar '.' sería suficiente para la mayoría de las personas? – donohoe

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

Ésta es una expresión ... sólo copiar y pegar al lugar donde se necesita esa cadena. O póngalo en una variable, para que pueda usarlo varias veces.

+0

Devuelve un error. 'pathName' debe ser todo en minúsculas. Tampoco satisface la ruta de la aplicación basada en la actualización de la pregunta original (de lo contrario, es una solución muy inteligente). – donohoe

+0

Sí, por supuesto ... en minúsculas. Sin embargo, no arroja un error, pero devuelve indefinido. –

+0

Actualicé el código. Ahora está en forma de expresión de función que ejecuta y devuelve el valor de cadena deseado ... –

2

Esto debería hacer el truco

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

Voto ascendente para proporcionar un trazador de líneas –

+0

Esto funcionó bien para mi escenario después de que cambié el lastIndexOf a "/ swagger" no es una solución perfecta, pero la mejor para mi caso y simple. ¡Gracias por compartir! –

0

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

Si la ruta es algo así como/myApp/...

o

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