2009-11-10 14 views
9

가능한 중복 :
What is my script src URL?동일한 JS 파일에서 JS 파일의 URL을 가져 오는 방법은 무엇입니까?

나는이 상황 : 파일 에서

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

내가 some.js 같은 파일의 전체 경로를 알 필요가 some.js , eq. "http://server/some.js". 어떻게해야합니까?

HTML 코드를 변경할 수 없습니다 (클라이언트는 JS 파일 포함).

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

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

답변

7

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, 아주 좋은 접근 방식. –

+3

Tomasz, 나는 뭔가를 놓치고 있습니까? 아니면 SC를 초기화합니까? 또한, idx = 0 및 s 앞에 var 키워드를 추가하면 IMO 전체가 더 깨끗해집니다. 좋은 코드 조각, 그렇지 않으면. –

+0

Tom Bartel - 당신이 맞았습니다 팁에 대해 – sbczk

0

확실하지 :

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

이 작업은 나중에 호출되는 코드가 아니라 스크립트 본문에서 수행해야합니다. 스크립트의 시작 부분에서 그것을 수행하고 필요한 경우 나중에 함수 호출에 사용할 수 있도록 변수를 기억하십시오. 따라서 나중에 스크립트에 새로운 <script> 노드를 삽입하는 코드의 영향을받지 않습니다.

+1

슬프게도 'Error' 객체는 표준화되지 않았으며'fileName' 만 모질라에 존재합니다. – bobince

+0

Safari에서 작동하지 않는 것 같습니다. – Sutra

9

가장 간단한 방법은 문서에 추가 할 마지막 스크립트를 찾기 위해 단지 것을 시도 : 그것은 시도 이것에 의해, 모든 브라우저에서 작동

+0

THAT 유쾌하다! –

+0

async 속성과 함께 사용합니까? – Eric

관련 문제