2009-11-10 13 views
9

Eventuali duplicati:
What is my script src URL?Come posso ottenere l'URL del file JS nello stesso file JS?

devo situazione:

<script 
    type="text/javascript" 
    src="http://server/some.js"> 
</script> 

Nel file di some.js ho bisogno di sapere il percorso completo di stesso file some.js , eq. "http://server/some.js". Come posso fare questo?

Non riesco a modificare il codice HTML (i client includono il file JS).

+0

Vedere http://stackoverflow.com/questions/984510/what-is-my-script-src-url –

risposta

7

provare che uno

sc = document.getElementsByTagName("script"); 

for(idx = 0; idx < sc.length; idx++) 
{ 
    s = sc.item(idx); 

    if(s.src && s.src.match(/some\.js$/)) 
    { return s.src; } 
} 
+0

+1, approccio molto bello. –

+3

Tomasz, mi sto perdendo qualcosa o dove inizializzi sc? Inoltre, l'IMO è tutto più pulito se aggiungi la parola chiave var prima dello idx = 0 e s. Bel pezzo di codice, altrimenti. –

+0

Tom Bartel - avevi ragione fisso e per il suggerimento su quello – sbczk

0

Non sono sicuro che funziona in tutti i browser, per provare questo:

function getScriptFileName() { 
    return (new Error).fileName; 
} 
+1

Purtroppo no, l'oggetto 'Error' non è standardizzato e' fileName' sembra esistere solo in Mozilla. – bobince

+0

Sembra che non funzioni in Safari. – Sutra

9

Il modo più semplice è solo quello di cercare l'ultimo script da aggiungere al documento :

var scripts= document.getElementsByTagName('script'); 
var mysrc= scripts[scripts.length-1].src; 

Questo deve essere fatto nel corpo principale dello script, non in codice chiamato più tardi. Preferibilmente fallo all'inizio dello script e ricorda la variabile in modo che possa essere utilizzata nelle chiamate di funzione successive, se necessario, e quindi non è influenzata dal codice più avanti nello script inserendo nuovi eventuali nodi <script> nel documento.

+0

CHE è geniale! –

+0

Questo ha anche con l'attributo asincrono? – Eric

Problemi correlati