본문 바로가기
IT Tips

카테고리위치 변경시 undefined error 처리 방법

by SenseChef 2012. 4. 7.

HTML이나 Javascripts로 코딩을 하다보면 Undefined Error가 나곤 합니다.
이것은 정의되거나 존재하지 않는 Object를 참조 했을 때 발생하는 문제인데 하기의 티스토리 사례를 참조 하시면 문제를 해결하는데 도움이 될 것으로 판단 됩니다.

티스토리에서 "카테고리의 다른 글" 보기 위치를 변경하는 경우 http://blog.missflash.com 운영자가 만든 Javascript을 이용하게 되는데 Undefined error가 화면에 표시되는 경우가 있습니다.

이런 에러는 작성한 글에 아무 카테고리도 적용하지 않은 경우에 발생합니다. 아래는 제 블로그의 수정 전 모습입니다.

  * 하단에 undefined라고 표시됩니다. 이 글은 아직 아무 카테고리로도 분류되어 있지 않아 에러가 발생했습니다.

 

  * 이 글은 카테고리로 분류되어 있어 에러가 없이 잘 나옵니다.

 

"카테고리의 다른 글"을 처리하기 위해 skin.html에 추가한 Javascript는 서버로부터 해당 글의 카테고리 정보를 받기를 기대하고 기다리는데, 아무런 카테고리로 분류되어 있지 않은 글이라면 서버에서는 어떤 정보도 보내주지 않습니다.

따라서 카테고리의 다른 글이 위치해야 할 곳에 Undefined라고 표시되면서 눈에 거슬리는 상태가 됩니다.

이와 관련 해당 블로그에 방문하여 댓글도 남기고 문의 했는데 바쁘신지 응답이 없어서 제가 직접 수정해 보았습니다.

저와 같이 Undefined error가 나시는 분들은 참조하여 수정해 보시기 바랍니다.

수정해야 할 부분은 카테고리의 다른 글 위치를 변경할 곳에 넣어둔 Scripts입니다.

<!-- 카테고리 다른글 위치 변경 시작 -->
<div id="MF_Reference" class="another_category another_category_color_white"></div>
<script type="text/javascript">
//<![CDATA[
// Created by MissFlash(http://blog.missflash.com)
var MF_Reference = document.getElementById('MF_Reference');
MF_Reference.setAttribute("id", "MF_Reference" + MissFlash_Div_Num);
MF_Reference.className = "another_category another_category_color_gray";
var ref_source = getElementsByClass(MissFlash_Div_Num,"another_category");
if (ref_source == null) //카테고리로 분류되지 않은 글이 있는 경우 에러처리
 {
   // alert("Error of NULL data"); This article doesn't have categories.
   // return true;
 }
else     // This article is classified into some of categories.
 {
   MF_Reference.innerHTML = ref_source;
   MissFlash_Div_Num += 1;
   //]]>
 }
</script>
<!-- 카테고리 다른글 위치 변경 끝 -->

상기 scripts에서 굵은 글씨로 표현된 부분을 수정하면 됩니다.

Scripts 중간에 ref_source라는 변수를 만드는데, 카테고리로 분류되어 있지 않으면 이 변수에 아무것도 들어가지 않는 null값이 됩니다. 따라서 null 값이 아닌 경우에만 표시 루틴이 실행 되도록 if ~ else ~ 구문을 이용해 수정 했습니다.

화일 

Scripts.txt

티스토리가 아닌 다른 Scripts나 코드더라도 동일한 접근으로 문제를 풀수 있겠습니다.

If 문으로 Object가 null인지 점검하여, 존재하지 않는 경우에는 예외 처리를 하도록 하는 것입니다.

 

기타 궁금한 사항 있으면 문의 주시기 바랍니다.

행복한 하루 되세요 !