본문 바로가기

Developer

이유없이 자바스크립트가 먹지 않을때(올바른 이벤트 캔슬법)

필자에게 위기가 닥친건 지난주 금요일 정도였다.

갑자기 자바스크립트로 서버 컨트롤 버튼 이벤트가 캔슬되지 않는다는 문의가 1~ 2 씩 오더니
(사실 실제로는 걍 뭐가 안되요 -_-; 이랬다)

그 문의 횟수가 점점 누적되어 갔다.

문제는 전혀 내 자리에서 재현이 안된다는점이었는데 ,

그 점이 나를 더욱 미치게 했다.

그러다가.. IE 초기화를 통해 문제를 해결했다는 제보를 입수했고 ,

급기야 이리저리 뜯어낸 결과 범인을 잡아냈다.

범인은 바로 !


PFHelper.dll 이란넘이 정지되자마자 , 말을 안듣던 자바스크립트 캔슬이벤트가 말을 듣게 되었다.

이넘이 하는 역활은 여기를 참조하시면 좋을듯 하다


나에게 있어서 이넘이 문제를 일으키는 코드는 다음과 같은 코드였다
(게다가 1.14는 완벽 재현이 되는데 반해 2.0에서는 간헐적으로 재현이 된다. 허허)


단순히 confirm 을 통해 버튼 이벤트를 캔슬 시키는 이 짧은 코드가

악성코드에 의해 언제나 true 또는 언제나 false 값을 반환하게 되었다

(물론 자바 스크립트로 찍어보면 값은 제대로 찍힌다. 그러나 이벤트는 동작을 하지 않는다)


그런데 , 이 악성 코드를 생각보다 많은 사람들에게서 발견되게 되었는데 ,

그 이유가 이 악성 코드가이 보이스챗을 지원하는 프로그램중

사람들이 널리 사용하는 소프트웨어에 포함되었기 때문이었다.

(WOW , 수많은 FPS 게임 등등을 즐기는 모든 사람의 PC에 이 악성코드가 담겨져 있다고 보면 된다)

그리하야.. 이 악성코드가 설치되어 있어도 , 실행되게 할수 있도록

자바 스크립트 루틴을 수정하게 되었다.


위와 같은 식으로 작성하면 해당 악성코드가 삽입되어 있어도 , 정상적으로 이벤트 캔슬이 가능하다.

그보다도 , 이 방법이 원래 정상적인 이벤트 캔슬 방법이다.

이 글을 같은 문제를 겪는 사람이 보았으면 한다 :)