공부/2011-2 : AJAX

EventListener를 사용한 하나의 이벤트에 다수 스크립트 사용

JUJA 2011. 5. 21. 10:15

2. 자바스크립트 시작하기(2)

중괄호와 세미콜론의 활용

말그대로 중괄호와 세미콜론을 사용하라는 말씀!!

  1. if (something) alert('something')
  2. else alert('nothing')

위와같이 하지 말고 아래처럼~

  1. if (something) { alert('something'); }
  2. else { alert('nothing'); }

 

 

페이지내에서 다수의 스크립트 실행하기

자바스크립트에서는 각각의 이벤트리스너를 추가/삭제 할 수 있는 메서드를 제공한다.

그러나, 불행히도 IE와 다른 브라우저들간의 차이점이 존재하고 있다.(보다 자세한 내용은 13장에서 설명한다.)

W3C 표준은 다음과 같은 addEventListener 메서드를 사용한다.

  1. window.addEventListener('load', FunctionName, false);

IE는 attachEvent 메서드를 사용한다.

  1. window.attachEvenet('onload', FunctionName);

 

위에서 눈여겨 볼 부분은 물론 메서드명이겠지만 추가/삭제 할 이벤트의 이름이 상이하다는 점이다.

IE 에서는 이벤트명 앞에 "on" 이라는 접두사가 붙는 것이다. (보다 자세한 내용은 역시나 13장에서..)

 

※ typeof 연산자를 사용한 디버깅

typeof 연산자를 사용하면 해당 개체의 "타입"을 알 수 있다. (string, number, boolean, object, array, function)

해당사항이 없으면 undefined를 반환한다.

 

※ 이벤트 리스너 관련한 크로스브라우징 사전지식

  • Opera의 경우 window객체가 아닌 document객체로 부터 이벤트 리스너를 할당받게 된다.
  • Netscape6의 경우 document객체로 부터 이벤트 리스너를 할당 받을 수 없다.
  • MAC IE5의 경우 위와 같은 메서드를 애초부터 지원하지 않기 때문에 chain multiple old-style을 사용한다.

 

 결론적으로 다음과 같은 이벤트 리스너 추가 함수를 작성할 수 있다.

  1. function addLoadListener(fn) {
      if (typeof window.addEventListener != 'undefined') {
     window.addEventListener('load', fn, false);
      } else if (typeof document.addEventListener != 'undefined') {
     document.addEventListener('load', fn, false);
      } else if (typeof window.attachEvent != 'undefined') {
     window.attachEvent('onload', fn);
      } else {
     var oldfn = window.onload;
     if (typeof window.onload != 'function') {
       window.onload = fn;
     } else {
       window.onload = function() {
      oldfn();
      fn();
       };
     }
      }
    }

 

 

JavaScript 디버깅

 자바스크립트를 사용함에 있어서 가장 힘든점을 또 하나 꼽으라하면 바로 디버깅 작업이다.(물론 한 번에 스크립팅을 끝내면 더 좋지만;;)

 

  • 기본적으로 사용하며 원시적인 방법은 window객체의 alert메서드를 사용하는 방법이다.(단, 무한루프 등에서의 사용은 자제하기 바란다.)
  • document객체의 title메서드나 window객체의 status를 사용하는 방법이다.
  • 툴을 사용하는 방법이 있다. 추천하는 툴은 FireFox에 설치할 수 있는 FireBug이다.
    (FireBug를 설치하면 console.log라는 메서드를 활용하여 디버깅 할 수 있다.)

 

 

본 문서는 개인적인 summary입니다. 복제 및 스크랩시에는 출처를 꼭 밝혀주시기 바랍니다. by 아거스