- javascript에서 js 파일 자체의 파일명을 알애내는 방법
- 컴퓨터야그/블로그 관련
- 2009. 6. 12. 10:07
BBCode for TiStory 3.1을 개발하는 과정에서 js 파일이 저장된 폴더를 알아내야 했다.
지금까지는 각 이미지의 절대주소를 코드 안에 넣어뒀는데, 이제는 그럴 수 없게 되었기 때문이다.
그 전까진 내 전용 코드에만 추가적인 이미지를 사용했는데, 이제 이모티콘이 추가됨으로써 그런 주먹구구는 버려야 했기 때문.
그래서, 일단, js 파일 자체의 이름을 알아내는 방법을 찾아봤다.
우선 찾은 방법은 아래와 같은 코드이다.
이 코드를 js 파일에 추가한 뒤에 getCurrentPath() 함수를 호출하면 js 파일 자체의 이름이 리턴된다.
이 함수는 깔끔하고 명확하기는 하지만, 약간의 부담스러운 점이 있다.
내용이 텅 비긴 했지만, SID로 시작하는 임의의 스크립트를 하나 만든다는 것이다.
아무것도 추가하지 않는 방법을 찾아보니 아래와 같은 방법을 찾을 수 있었다.
약간 복잡하기는 하지만, 이 함수는 IE8, FF3, Chrome2 에서 정상동작하는 것을 확인했다.
(물론 앞의 함수 역시 각 브라우저들에서 잘 동작한다)
이 코드 역시 js 파일에 추가한 뒤에 getCurrentPath() 함수를 호출하면 js 파일 자체의 이름이 리턴된다.
이렇게 js 파일 자체의 파일명을 얻었으면, 다음은 간단하다.
아래와 같이 getCurrentPath() 뒤에 간단한 정규식 함수 하나만 달아주면 된다.
덧. 이 함수는 html 파일 내에 위치하면 안된다.
두 getCurrentPath() 모두 html 내에서는 null을 리턴하기 때문이다.
지금까지는 각 이미지의 절대주소를 코드 안에 넣어뒀는데, 이제는 그럴 수 없게 되었기 때문이다.
그 전까진 내 전용 코드에만 추가적인 이미지를 사용했는데, 이제 이모티콘이 추가됨으로써 그런 주먹구구는 버려야 했기 때문.
그래서, 일단, js 파일 자체의 이름을 알아내는 방법을 찾아봤다.
우선 찾은 방법은 아래와 같은 코드이다.
getCurrentPath: function()
{
var GetCurPath = (function(){
var RandID = "SID" + Math.round(100000*Math.random());
document.write("<script id='"+RandID+"'></script>");
return document.getElementById(RandID).previousSibling.getAttribute("src");
})()
return GetCurPath;
}
이 코드를 js 파일에 추가한 뒤에 getCurrentPath() 함수를 호출하면 js 파일 자체의 이름이 리턴된다.
이 함수는 깔끔하고 명확하기는 하지만, 약간의 부담스러운 점이 있다.
내용이 텅 비긴 했지만, SID로 시작하는 임의의 스크립트를 하나 만든다는 것이다.
아무것도 추가하지 않는 방법을 찾아보니 아래와 같은 방법을 찾을 수 있었다.
getCurrentPath: function()
{
var scr=document.getElementsByTagName('script');
return(scr[scr.length-1].getAttribute("src"));
}
약간 복잡하기는 하지만, 이 함수는 IE8, FF3, Chrome2 에서 정상동작하는 것을 확인했다.
(물론 앞의 함수 역시 각 브라우저들에서 잘 동작한다)
이 코드 역시 js 파일에 추가한 뒤에 getCurrentPath() 함수를 호출하면 js 파일 자체의 이름이 리턴된다.
이렇게 js 파일 자체의 파일명을 얻었으면, 다음은 간단하다.
아래와 같이 getCurrentPath() 뒤에 간단한 정규식 함수 하나만 달아주면 된다.
alert(getCurrentPath().match(/^(.*)\/([^\/]*)$/i)[1]+'/');
덧. 이 함수는 html 파일 내에 위치하면 안된다.
두 getCurrentPath() 모두 html 내에서는 null을 리턴하기 때문이다.
'컴퓨터야그 > 블로그 관련' 카테고리의 다른 글
JW Player 도우미 플러그인 1.2 업데이트 (3) | 2009.07.12 |
---|---|
iNove 스킨 버그(?) 3가지 수정 (내용 추가) (6) | 2009.06.18 |
BBCode for TiStory 3.1 업데이트: 이모티콘 기능 추가 (22) | 2009.06.11 |
BBCode for TiStory 3.0a 마이너 업데이트 (15) | 2009.06.07 |
노무현 대통령님 배너를 계속 유지하겠습니다 (15) | 2009.06.06 |
Recent comment