UNIQLOCK을 달고 나서 카테고리 트리의 서브 카테고리가 열리지 않으면서 스크립 오류가 나는 문제가 있었어요.

아마도 UNIQLOCK 스크립트를 달면서 뭔가 오류가 있었겠죠.
UNIQLOCK은 외부의 단일 스크립트이고 그 안에 두 개의 스크립트가 추가로 로드되는데요, 이 중 setLayer.js 라는 파일에 있는 코드가 문제를 일으키네요. 원본 코드는 다음과 같습니다.

function showLayer(layerID,value){
// alert(layerID);
 document.getElementById(layerID).style.visibility = value;
}

평범하죠? 문제는 style.visibility가 설정되어 있지 않은 layer에서는 이 코드가 오류를 발생시킨다는 점이에요. 게다가 showLayer라는 함수는 티스토리의 common2.js 파일에서도 사용하고 있는 이름인데 두 펑션의 정의가 다르니까 당연히 티스토리의 showLayer를 사용할 때 문제가 발생할 거에요. 티스토리의 showLayer 함수는 다음과 같습니다.

function showLayer(id) {
 document.getElementById(id).style.display = "block";
 return true;
}
자바스크립트의 편리한 점이자 문제점은 같은 이름의 펑션을 정의하면 나중에 정의된 내용으로 덮어씌워져 버린다는 건데요, 이걸 한 번 더 이용해서 위의 두 펑션이 공존할 수 있는 형태로 showLayer를 재정의했어요.

function showLayer(id, value) {
 document.getElementById(id).style.display = "block";
 var ele = document.getElementById(id);
 if (ele.style.visibility) {
  ele.style.visibility = value;
 }
 return true;
}
자 그럼 최종적인 수정.
티스토리의 스킨 수정에서 UNIQLOCK를 달 때에는 다음과 같이 스크립트를 붙이시면 돼요.
<script type="text/javascript" src="http://www.uniqlo.jp/uniqlock/user/js/고유ID.js"></script>
<script type="text/javascript">
function showLayer(id, value) {
 document.getElementById(id).style.display = "block";
 var ele = document.getElementById(id);
 if (ele.style.visibility) {
  ele.style.visibility = value;
 }
 return true;
}
</script>
그러면 제 블로그의 오른쪽 상단에 있는 것 처럼 UNIQLOCK도 잘 나오고 카테고리도 이상이 없게 쓸 수 있게 돼요 :D

덧붙이자면, 바로 이런 문제가 자바스크립의 치명적인 문제가 아닐까 싶어요.
이 문제를 해결하려면 티스토리 정도로 범용적인 서비스의 경우 반드시 서비스에서 공통적으로 사용하는 스크립트 코드들을 클래스화 하여 네임스페이스 때문에 생기는 문제가 없도록 해야 할 거에요.

그리고 UNIQLOCK처럼 어디에나 붙여서 쓸 수 있도록 하는 스크립트도 마찬가지로 클래스화 하여 다른 서비스에 영향을 주지 않도록 해야겠죠.

자바스크립트로 클래스를 만들어 쓰는 것은 자바 스크립트를 상당히 잘 하시는 분들도 그 필요성을 잘 이해를 못하는 경우가 많은 것 같아요. 그리고 충분히 알고 있다고 해도 잘 설계되지 않은 자바스크립트 클래스는 그렇지 않은 일반 함수보다 훨씬 디버깅하기 어렵다는 문제도 있죠.

VS 2008에서는 자바스크립트 클래스에 대한 인텔리센스나 디버깅을 지원한다는데 과연 어느 수준으로 될지는 모르겠지만 이런저런 문제로 저는 자바스크립트를 기피하는 편이에요 :(
Posted by gongdo

Submit comment.

  1. Favicon of http://whatauwant.tistory.com BlogIcon 기차니스트 2007.10.07 22:04  comment URL  Edit/Remove  Submit comment.

    와, 이런 부분에서도^^ 뛰어나십니다.
    수정 하고 싶지만, 으레 귀찮네요ㅋㅋ

    • Favicon of http://gongdo.tistory.com BlogIcon 공도 2007.10.07 23:00  comment URL  Modify/Remove

      기차니스트님의 블로그는 카테고리가 트리식으로 되어 있지 않아서 이 문제에 영향 받지 않을 거에요^^

  2. Favicon of https://spinning-around.tistory.com BlogIcon 2007.10.08 02:22 신고  comment URL  Edit/Remove  Submit comment.

    유니클락을 오늘 처음 달았는데 덕분에 문제를 알아채기도 전에 해결했네요. 감사합니다 >.<

  3. Favicon of http://steelleg.tistory.com BlogIcon 무쇠다리 2007.10.11 10:47  comment URL  Edit/Remove  Submit comment.

    오호...
    그랫었군요. 그랬던 거였군요.

  4. Favicon of http://gifarang.com BlogIcon 유노 2007.10.12 14:20  comment URL  Edit/Remove  Submit comment.

    UNIQLOCK 달고나서 이상하길래 찾아봤더니 이런 해결책이 있었군요.
    좋은정보 알아갑니다;.

  5. Favicon of http://gongdo.tistory.com BlogIcon 공도 2007.10.12 19:56  comment URL  Edit/Remove  Submit comment.

    히히 역시 많은 분들이 같은 문제를 겪고 계셨군요 ^^

  6. Favicon of http://www.korweb.net BlogIcon 코웹 2007.10.29 15:32  comment URL  Edit/Remove  Submit comment.

    공도님 주말내내 카테고리로 고민하던 중 검색을 통해 공도님 덕분에 해결할 수 있어서 대단히 감사합니다! 원인이 유니클락에 있을것도 같다는 생각까지는 했으나, 이렇게 쉽게 해결 할 수 있게 해주셨네요^^ 수고하세요!!!

  7. Favicon of http://2s2k.com BlogIcon Uk 2007.11.19 22:27  comment URL  Edit/Remove  Submit comment.

    공도님 좋은 정보 감사드려요~ :)

  8. Favicon of http://gongdo.tistory.com BlogIcon 공도 2007.11.20 01:07  comment URL  Edit/Remove  Submit comment.

    헤에 같은 문제로 찾아오시는 분들이 꾸준히 있네요. 오우 보람보람~

  9. Favicon of https://blog.divershigh.com BlogIcon SUPERCOOL. 2007.12.19 05:27 신고  comment URL  Edit/Remove  Submit comment.

    정말 감사드립니다. 엄청 골치 썪고 있었는데 한방에 해결됬습니다. 감사합니다.

  10. Favicon of https://blog.divershigh.com BlogIcon SUPERCOOL. 2007.12.19 05:28 신고  comment URL  Edit/Remove  Submit comment.

    아 그리고 파이어폭스 유저입니다. 공도님 블로그 깨져서 나옵니다. 사이드바가 지금 이 아래쪽으로 붙어있습니다.-_-;; 즐거운 하루되세요

    • Favicon of http://gongdo.tistory.com BlogIcon 공도 2007.12.19 09:45  comment URL  Modify/Remove

      에고 이거 기본 스킨에서 약간 수정했더니 이모양-_-;
      수정하기가 상당히 귀찮아서 그냥 내버려 두고 있었어요.
      휴우... 언제 한 번 갈긴 해야 하는데. . .

  11. Favicon of https://imanager.tistory.com BlogIcon 아이매니저 2008.03.05 14:58 신고  comment URL  Edit/Remove  Submit comment.

    와우~!!! 님덕분에 오류 알기 전에 제대로 달았네요..

    감사합니다..

  12. Favicon of http://sjin.co.cc BlogIcon 없음 2008.03.10 07:18  comment URL  Edit/Remove  Submit comment.

    UNIQLOCK 없애버릴까 하다가 덕분에 고쳤네요 :)
    감사합니다~^ㅁ^