2010-11-23 15 views
5

¿Cómo puedo averiguar la URL del archivo JS que se llamó?URL de la secuencia de comandos actual en JavaScript

Digamos que el archivo JS (que es parte de una biblioteca) y el archivo HTML (que es la aplicación) están en un servidor diferente. Para descubrir la URL del archivo HTML es fácil. Pero, ¿cómo puedo averiguar el nombre del servidor y la ruta del servidor de archivos JS dentro del archivo JS mismo? (Editar: hay un cargador que invoca otros archivos JS de esta biblioteca en la misma estructura de directorios)

Preferiblemente una solución JQuery o JS pura.

Editar:

Después supe por sus respuestas y comentarios que decidió que sería más limpio para mover realmente la carga de código para el primer servidor, donde también las vidas html, lo que evita el problema.

+0

¿Para qué lo necesitas? –

+0

@Josh: para cargar más archivos js desde el mismo servidor. – mit

+0

¿No podría usar php para crear dinámicamente un archivo js e incluir el código js que desee? – Fred

Respuesta

4

En jQuery que podría hacer:

$('script').each(function(i, e) { 
    alert($(e).attr('src')); 
}); 
+0

¿Utilizaría $ .append para agregar un script al documento? No estoy seguro de que lo cargaría entonces. – Fred

+1

@Fred - Para cargar un archivo async JS, debe usar 'getScript()', solo para asegurarse de que se llame a su devolución de llamada después de que el archivo JS esté completamente cargado. – Ben

2

Se puede recorrer las etiquetas script y comprobar el SRC, supongo ...

var els = document.getElementsByTagName("script"); 
var str = ""; 

for(var i = 0; i < els.length; i++) { 
    var src = els[i].src; 
    if(src.length > 0) 
    str += src + "\n"; 
} 

alert(str); 

pegue lo siguiente en la barra del navegador para ver las URL de los comandos de esta página ...

javascript:var els = document.getElementsByTagName("script"); var str = ""; for(var i = 0; i < els.length; i++) { var src = els[i].src; if(src.length > 0) { str += src + "\n";}}alert(str); 

Nota: IE parece recorrer sólo a través <script> elementos dentro de la etiqueta <body>.

Cuestiones relacionadas