Page 1 of 1
[질문] text박스에서 한글을 쓸때...
Posted: 2005 06 15 20:38 29
by ring
Code: Select all
<html>
<head>
<script>
function test(obj) {
// alert(obj.value);
document.getElementById('test').innerHTML = obj.value;
}
</script>
</head>
<body>
<input type=text onkeypress="test(this);">
<div id=test></div>
</body>
</html>
위의 소스로 text박스에 글을 써보면, 영문일경우 한글자 칠때마다 바로 아래의 div에 해당 글이 들어가게 됩니다. 하지만 파이어폭스에서 한글일 경우에는 글을 친후 스페이스나 화살표키로 움직여 주지 않으면 글이 보이지 않습니다.
하지만 test함수에 alert(obj.value); 이런식으로 alert를 띄어주면 잘 됩니다. onkkeypress가 한글일때 인식을 못하는것은 아닌듯한데 왜 저런 현상이 나타난걸까요. 오랫동안 붙잡고 있어도 답이 안나와서 올립니다. ㅠ.ㅠ
그리고 이건 추가로, 한글의 "ㄱ"을 입력했을 경우, xml이나 db데이터에서 "가는", "가자미", "가오리", "강물" 이런식으로 검색할수 있는 방법이 있을까요..?
아! 그리고 공지사항의 Cross Browsing 가이드 페이지가 제대로 나오지 않는것 같습니다. 복구 부탁드릴께요~ ( __)
Re: [질문] text박스에서 한글을 쓸때.
Posted: 2005 06 15 23:02 38
by 소프트원트
ring wrote:아! 그리고 공지사항의 Cross Browsing 가이드 페이지가 제대로 나오지 않는것 같습니다. 복구 부탁드릴께요~ ( __)
index.html에 문제가 있내요.
아래 링크에서 보시면, 세부 페이지는 모두 볼 수 있습니다. 아마도 공격자가 index.html 파일만 변경한 것같습니다.
Cross Browsing 가이드
Re: [질문] text박스에서 한글을 쓸때.
Posted: 2005 06 16 07:41 47
by 빛알갱이
ring wrote:
하지만 test함수에 alert(obj.value); 이런식으로 alert를 띄어주면 잘 됩니다. onkkeypress가 한글일때 인식을 못하는것은 아닌듯한데 왜 저런 현상이 나타난걸까요. 오랫동안 붙잡고 있어도 답이 안나와서 올립니다. ㅠ.ㅠ
아예 안 된다면 모르겠는데, alert를 넣으면 된다? 거 참 신기하네요. 뭔가 들여다 보아야 할 듯....
그리고 이건 추가로, 한글의 "ㄱ"을 입력했을 경우, xml이나 db데이터에서 "가는", "가자미", "가오리", "강물" 이런식으로 검색할수 있는 방법이 있을까요..?
어쩌면 비효율적일 수도 있지만, 쉽게 생각할 수 있는 방법은 데이터를 일단 NFD(Normalization Form D)로 바꾸고 (아니면 Unicode 2.0 규정 상의 NFKD), 그 상태에서 정규식 매치를 하는 것입니다.
굳이 NFD로 데이터를 바꾸지 않아도, 일단 데이터가 모두 Unicode로 되어 있다면 'ㄱ'으로 시작하는 모든 음절을 찾는 일은 간단한 범위 검사만으로 간단히 되기도 하지요. (0xac00 <= c < 0xac00 + 21 * 28 : 데이터가 UTF-16이나 UTF-32로 들어 있을 때) '가'를 넣었을 때 '가, 각, 갈, 갉...' 등을 모두 찾으려면 '0xac00 <= c < 0xac00 + 28) '고'를 넣었을 때 '고, 곡, ...ㅤㄱㅗㅎ, 곽... ㅤㄱㅘㅎ ... 괵.... ㅤㄱㅚㅎ'도 모두 다 찾으려면 '0xac00 + 21 * 28 * 8 <= c < 0xac00 + 21 * 28 * 13'
Re: [질문] text박스에서 한글을 쓸때.
Posted: 2005 06 16 09:48 14
by 하늘다람쥐
ring wrote:하지만 test함수에 alert(obj.value); 이런식으로 alert를 띄어주면 잘 됩니다. onkkeypress가 한글일때 인식을 못하는것은 아닌듯한데 왜 저런 현상이 나타난걸까요. 오랫동안 붙잡고 있어도 답이 안나와서 올립니다. ㅠ.ㅠ
Gecko DOM을 보니 onkeypress와 onkeydown의 정의가 똑같더군요. 그래서 그런지 두 이벤트가 동일한 현상을 보이고 있습니다. 제가 볼 땐 한글을 입력하는 동안은 keypress를 인식하지 않는 것 같습니다. IE에서 테스트를 해보니 keypress는 동일하게 보이며 keydown의 경우는 좀 이상하긴 하지만(영문자와 한글이 나오는 타이밍이 다릅니다. 한글은 누르자마자 출력되어 나오는군요.), 원래 의도했던 데로 되고 있습니다. 만약 수정가능하다면 한글도 영문자처럼 누르고 나서 다른 키를 눌렀을 때 나왔으면 좋겠군요.
전 ring님의 소스를 약간 수정해서 테스트했습니다.
Code: Select all
document.getElementById('test').innerHTML += obj.value + "[KeyPress]<br>";
Re: [질문] text박스에서 한글을 쓸때.
Posted: 2005 06 16 12:35 26
by ring
답변.. 정말 감사드립니다. (--)(__)(--)
몇가지 질문이 더 생겼습니다~
빛알갱이 wrote:어쩌면 비효율적일 수도 있지만, 쉽게 생각할 수 있는 방법은 데이터를 일단 NFD(Normalization Form D)로 바꾸고 (아니면 Unicode 2.0 규정 상의 NFKD), 그 상태에서 정규식 매치를 하는 것입니다.
음.. 그럼.. 자바스크립트로 데이터를 NFD로 바꾸는게 가능할까요??
검색해보았는데 자료가 그리 많지 않네요..
굳이 NFD로 데이터를 바꾸지 않아도, 일단 데이터가 모두 Unicode로 되어 있다면 'ㄱ'으로 시작하는 모든 음절을 찾는 일은 간단한 범위 검사만으로 간단히 되기도 하지요. (0xac00 <= c < 0xac00 + 21 * 28 : 데이터가 UTF-16이나 UTF-32로 들어 있을 때) '가'를 넣었을 때 '가, 각, 갈, 갉...' 등을 모두 찾으려면 '0xac00 <= c < 0xac00 + 28) '고'를 넣었을 때 '고, 곡, ...ㅤㄱㅗㅎ, 곽... ㅤㄱㅘㅎ ... 괵.... ㅤㄱㅚㅎ'도 모두 다 찾으려면 '0xac00 + 21 * 28 * 8 <= c < 0xac00 + 21 * 28 * 13'
뒤의 21 * 28 * 8 이런 숫자들은.. 어떤 의미인가요.. 그럼.. '강ㄴ'을 검색어로 했을때 '강남','강너울' 이런식으로의 검색까지 동적으로 가능할까요.
하늘다람쥐 wrote:
Gecko DOM을 보니 onkeypress와 onkeydown의 정의가 똑같더군요. 그래서 그런지 두 이벤트가 동일한 현상을 보이고 있습니다. 제가 볼 땐 한글을 입력하는 동안은 keypress를 인식하지 않는 것 같습니다.
네... 저도 확인해 보았는데 말씀하신것이 맞는것 같더군요. 결국 파폭에서는 방법이 없는걸까요...
소프트원트님, 구글에서 검색해보니
http://www.mozilla.or.kr/products/firefox/ 이 페이지도 문제가 있는듯 합니다.
그리고 이건 다른이야기인데....
지금.. 이 포럼 게시판의 폭이 작아질수 있나요...
어쩌다 단축키를 눌렀는데, 그 전보다 작아진듯한 느낌을 받아서요.. --;