2009-11-10 13 views

Odpowiedz

7

spróbować że jeden

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, bardzo ładne podejście. –

+3

Tomasz, czy czegoś brakuje lub gdzie inicjujesz sc? Ponadto, IMO całość jest czystsza, jeśli dodasz słowo kluczowe var przed idx = 0 i s. Niezły kawałek kodu, w przeciwnym razie. –

+0

Tom Bartel - miałeś rację: naprawiono i thx dla końcówki tego – sbczk

0

Nie wiesz, że działa we wszystkich przeglądarkach, by spróbować tego:

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

Niestety, nie, obiekt 'Error' jest niestandardowy, a' fileName' wydaje się istnieć tylko w Mozilli. – bobince

+0

Seems nie działa w Safari. – Sutra

9

Najprostszym sposobem jest po prostu spojrzeć na ostatni skryptu do dodania do dokumentu :

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

Trzeba to zrobić w głównej części skryptu, a nie w kodzie nazywanym później. Najlepiej zrobić to na początku skryptu i zapamiętać zmienną, aby mogła być użyta w późniejszych wywołaniach funkcji, jeśli to konieczne, więc kod ten nie ma wpływu na kod później w skrypcie, wstawiając do niego nowe węzły <script>.

+0

TO jest genialny! –

+0

Czy ma to również związek z atrybutem asynchronicznym? – Eric

Powiązane problemy