2010-06-30 96 views
49

Estoy tratando de obtener el directorio actual del archivo en Javascript para que pueda usarlo para activar una función jquery diferente para cada sección de mi sitio.¿Cómo puedo obtener el nombre del directorio actual en Javascript?

if (current_directory) = "example" { 
var activeicon = ".icon_one span"; 
}; 
elseif (current_directory) = "example2" { 
var activeicon = ".icon_two span"; 
}; 
else { 
var activeicon = ".icon_default span"; 
}; 

$(activeicon).show(); 
... 

¿Alguna idea?

Respuesta

19

Puede utilizar window.location.pathname.split('/');

que producirá una matriz con todos los elementos entre la/s de

8

Esto funcionará para caminos reales en el sistema de archivos si no estás hablando de la cadena URL.

var path = document.location.pathname; 
var directory = path.substring(path.indexOf('/'), path.lastIndexOf('/')); 
+0

camino var = document.location.pathname; var dir = path.substring (path.indexOf ('/'), path.lastIndexOf ('/')); – gtzinos

65

window.location.pathname le proporcionará el directorio, así como también el nombre de la página. A continuación, puede utilizar .substring() para obtener el directorio:

var loc = window.location.pathname; 
var dir = loc.substring(0, loc.lastIndexOf('/')); 

Hope this helps!

+0

mi sitio joomla produce de URL como esta: http: //localhost/sub/sub/sub/index.php/ali-mm-d#tab2 (entre otras cosas extrañas) tanto, este enfoque no produce un directorio, sino más bien: http: //localhost/sub/sub/sub/index.php – dsdsdsdsd

+0

esta fue la solución para mí, gracias. – DeyaEldeen

9

Por tanto/y \:

window.location.pathname.replace(/[^\\\/]*$/, ''); 

Para volver sin la barra final, hacer:

window.location.pathname.replace(/[\\\/][^\\\/]*$/, ''); 
+0

Esto funciona en IE <9, mientras que las respuestas que usan .lastIndexOf no funcionan. +1 por esta razón. – thunderblaster

2

Si desea que la URL completa, por ejemplo, http://website/basedirectory/workingdirectory/ uso:

var location = window.location.href; 
var directoryPath = location.substring(0, location.lastIndexOf("/")+1); 

Si desea que la ruta local sin dominio, por ejemplo, /basedirectory/workingdirectory/ uso:

var location = window.location.pathname; 
var directoryPath = location.substring(0, location.lastIndexOf("/")+1); 

En caso de que no necesita la barra al final, después de eliminar el +1location.lastIndexOf("/")+1.

Si solo desea el nombre del directorio actual, donde se ejecuta el script, p. workingdirectory uso:

var location = window.location.pathname; 
var path = location.substring(0, location.lastIndexOf("/")); 
var directoryName = path.substring(path.lastIndexOf("/")+1); 
+0

ubicación hace que Google Chrome vuelva a cargar la página, cambie el nombre de la variable a otra cosa como ubicación1 – mparkuk

2

Esta sola línea funciona:

var currentDirectory = window.location.pathname.split('/').slice(0, -1).join('/') 
Cuestiones relacionadas