밤세.... 파이어폭스 버그와 씨름 하다 승리 했습니다. ㅠㅠ > 자유게시판

자유게시판

밤세.... 파이어폭스 버그와 씨름 하다 승리 했습니다. ㅠㅠ 정보

밤세.... 파이어폭스 버그와 씨름 하다 승리 했습니다. ㅠㅠ

본문

서제스트 기능을 구현하는데...

파이어폭스에서는 한글입력시
keypress, keydown등 keyxx 이벤트를 날리지 않습니다.
익스플로러는 잘 날리는데 말이죠..

그래서 한글 쓰다가. 화살표를 누르던가 다른 키를 누르면 그제서야 이벤트가 날아와서
서제스트 기능이 동작을 합니다.
이래서는 서제스트 기능이 무의미 하죠...

구글이 어떻게 했는지 살펴 볼려고 자바 스크립트 파일을 열어보니.;;;

a,b,c,,,,,,,,

모든 함수 변수명을 abcd...로 바꾸어 놓고 인덴테이션을 다 없에고.. 한줄로 만들어 ㅤㄴㅘㅅ더군요;;;
포기하고 구글링을 하는데..

트릭으로 해결하는 방법이 나오네요..

최초에 클릭할때 한번은 keypress 이벤트가 날라오니.. 재귀함수를 하나 만들어서.. 이때에 호출해주네요... 그럼 계속 폼내용을 검사해서 서제스트 기능을 넣어줍니다.

그런대 희안하게.. 함수가 자바스크립트의 클래스(이름만 클래스)에 들어가면 호출이 안되네요;;
어쩔수 없이 따로 함수로 빼내어서;;; 실행하니 되네요;;

아... 정말 브라우저마다 틀린거.. 정말 힘듭니다. ㅠㅠ
추천
0
  • 복사

댓글 5개

아...
설명 드릴게요...^^


특정 폼에서 사용자가 키를 눌렀을때 우리가 어떤 액션을 취하고자 합니다.

그럼 보통

<input type=text value="" onkeypress="eventHandler()">

위와 같은 방법으로
keypress라는 이벤트에 대해서 함수를 연결 시키죠..
한마디로 어떤키든 누르게 되면
eventHandler() 라는 자바스크립트 함수를 호출하게 됩니다.

그러나 파이어폭스에서는.. 키를 누르면 keypress메시지가 호출되어서 eventHandler()함수가 호출 되어야 하는데..
한글같이 완성형 언어에 대해서는.. 지원하지를 않습니다.
한글자가 모두 완성되어도 메시지가 넘어오지 않습니다.

그래서 한글을 쓰다가 영어를 쓰거나 방향키 등을 움직이거나 하면
그제서야 keypress 함수가 호출되죠..

이렇게 되면 재대로된 서제스트 기능(자동완성 기능? 비슷한것)이 구현이 안되기 때문에 삽질을 했다는 내용입니다 ^^;;
참고로 서제스트 기능이란..

구글에서 검색창에 검색어를 넣으면 유사한 검색어들이 아래로 주루룩 나오늘걸 말합니다.^^
http://www.nicemeet.tv 이사이트에 서제스트 기능을 적용하면서
파이어폭스 호환 시키느라 고생좀 했습니다.

항상 작업하면서 느끼는 거지만 부라우저 호환성 때문에 노이로제 걸립니다.ㅎㅎ
오~~ 고생 하셨어요^^

파폭이... 영어이외의 언어권을 잘 고려하지 않는다는 말도 들리더라고요.. ;;;

모질라 사용자 모임인가??
거기서 파폭 아주 예전버전부터 문제가 되어서 버그리포트로 올라간 내용인데..

3.X버전이 나온 지금까지... 수정을 안해준다네요.. ㅋㅋ
© SIRSOFT
현재 페이지 제일 처음으로