'attachevent'에 해당되는 글 2건

  1. 2007.05.01 엘리먼트에 메소드추가하기.
  2. 2007.04.30 IE attachEvent 사용시 메모리 닉 조심하기.

엘리먼트에 메소드 추가하는것은 많은 자바스크립트 프래임워크에 많이 나와있습니다.
근데 다 조금씩 틀려서 제 취향에 맞추어서 만들었습니다.

만들때 목표를 잡은것은.

첫째.ie에서 매모리릭 방지하기.
두번째.Browser Sniffer 한번만 하기.
세번째.this scope사용하기.

생각하고 만들었는데.this scope사용하는것 아무래도 안될것 같아서 prototype에서 getElement을 사용했습니다.

문제가 attachEvent을 사용하면 scope가 바뀌는데 그것을 방지하기위해 apply를 사용했습니다.이렇게 하면 this의 scope가 잘되는데 문제는 detachEvent을 사용할때 작동이 안됩니다.
아무래도 detachEvent할때 scope문제가 있는것 같습니다.
(혹시 알고 계신분있으면 댓글 부탁드립니다ㅡㅡ;)

이렇게 해서 간단하게 만들어봤습니다.
거의 prototype아티클 짬뽕해서 만들었습니다.

사용법은
ManageEvent.remove(엘리먼트,이벤트명,함수);
ManageEvent.add(엘리먼트,이벤트명,함수);
ManageEvent.getElement(event);


Posted by 전용우
,
요즘 prototype에서 자주 사용할만것들을 짤라서 모으고 있는데  Event.unloadCache()라는걸 확인했다.

처음볼땐 그냥 아무것도 아니구나 하고 넘어갔는데 이번에 이벤트를 추가하는것을 만들려고 확인중 엄청난 일을 하는것을 알게됬다.

알고 보니 ie에서 attachEvent을 사용할때 unload시 detachEvent을 안해주면 가비지컬랙션이
회수를안하고 그냥 브라우져에 상주해서 그것을 가비지 컬랙션이 회수할수 있게끔하는 역활을 하는것이였다.(관련글)-물론 브라우져를 닫으면 상관없음.
(JQuery는 귀찮은지 고전적인 방법으로 매소드 추가)

가끔 여기저기에 있는 자바스크립트소스를 확인해보는데 특정프래임워크를 사용하지 않는곳은
거의 unloadCache와 같은 기능을 해주는곳이 없다.

이벤트를 추가하는것은 common method라 굉장히 많이 쓰이는데도 안하는거 보면 별차이가 없나?..:(

아..나만 몰랐나..ㅡㅡ;

참고글
dean.edwards의 add-event
Understanding and Solving Internet Explorer Leak Patterns
addEvent() considered harmful

Posted by 전용우
,