리스토리의 IT's

태터툴즈(TC) urlKeeper 에러 수정

리스토리™ 2007. 12. 1. 13:19
반응형
기존 daisy님의 스킨을 이용중인데 URLKeeper 플러그인때문에 계속 에러가 났었다. 88번 줄의 ')'가 빠졌다고 나오는데 소스를 들여다 봐도 도무지 먼지 알수가 없드라. 기존 태터 1.1버젼부터 TC 1.5.X버젼까지 업데이트를 한것이라 혹시 그부분에서 에러가 나는것인가 해서 ㅡㅡ;; 아예 프로그램을 새로 깔아보기도 했었다 ㅠ_ㅠ

스킨의 소스는 몇번을 검토해 본후 정상적이라 판단이 되서 이젠 URLKeeper 플러그인 소스를 혹시나 하는 마음으로 보았다. 역시나 쉽게 오류는 보이지 않았다.

몇번을 보다가 드디어 한군데 이상한 부분...URLKeeper 부분을 onload로 호출하는 부분이었다.

기존 daisy님의 스킨은 body onload에서 이미 다른 함수를 호출하는 부분이 있어서 URLKeeper함수에서 또다시 onload를 호출하니 오류가 났었던 것이다.

그래서 URLKeeper함수를 아래와 같이 수정하였다.
attachEvent로 onload에 이벤트를 추가하는 방식으로 바꾸었다.
그러면 어떤 스킨이라도 스킨에서 onload를 이용해도 문제가 안될것이다.

...중략

<script type="text/javascript">
//<![CDATA[
 
  window.attachEvent("onload", urltest);  //추가해준 부분
  //window.onload = function(){  // 주석처리한 부분
  function urltest(){
  var type = navigator.appName
  var lang;
  var msg;
  var myurl = location.href;
  var config = "'.$config.'";
 
  if (type=="Netscape")
   lang = navigator.language
  else
   lang = navigator.userLanguage
 
  // 국가코드에서 앞 2글자만 자름
  var lang = lang.substr(0,2)
  // 한글인 경우
  if (lang == "ko")
   msg = " 원래 주소인 "+myurl+" 로 접속해주세요.";
  // 다른 언어인 경우
  else
   msg =  "please, visit directly via "+myurl;
  try {
   if(top != self){
    if (config == "1") {
     window.open(myurl,"_top");
    }else{
    if (confirm(msg)) window.open(myurl,"_top");
    }
   }
  } catch (e) {
  }
  }
//]]>
</script>
반응형