지금까지는 각 이미지의 절대주소를 코드 안에 넣어뒀는데, 이제는 그럴 수 없게 되었기 때문이다.
그 전까진 내 전용 코드에만 추가적인 이미지를 사용했는데, 이제 이모티콘이 추가됨으로써 그런 주먹구구는 버려야 했기 때문.
그래서, 일단, 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을 리턴하기 때문이다.
역시나 까막눈으로는 봐도 뭔 소린지~ OTL
답글삭제@miru - 2009/06/13 06:01
답글삭제'천리길도 한 걸음부터...' 조금씩 읽어보시면 재미있답니다.