원글 링크 : https://kjwsx23.tistory.com/557
InputEvent 인터페이스를 상속합니다.
isComposing
이란 속성은 해당 input 이벤트가 compositionstart 이후 & compositionend 이전에 트리거 될 지의 여부를 나타냅니다.
value
가 변경되기 직전에 발생합니다.value
가 변경된 직후 발생합니다. 따라서 조합 문자의 경우, 하나의 글자가 완성된 후 새로운 글자가 입력될 때 발생합니다.위 이벤트들은 HTMLElement.contenteditable
속성이 true
이거나 Document.designMode
속성이 on
이면 트리거될 수 있습니다.
[disignMode를 on으로 하면 편집이 가능합니다.]
KeyboardEvent 인터페이스를 상속합니다.
특이하게도, isComposing
속성은 InputEvent
인터페이스에 정의되어 있지만, 키보드 이벤트에서도 해당 속성에 접근할 수 있다.
KeyboardEvent 인터페이스에도 isComposing
이 존재합니다. 😅
0
입니다. printable characters에 대해 유용하지 않다고 하네요.더 자세한 내용은 W3C UI Events - keys를 참고해주세요.
위 세 이벤트가 순서대로 발생합니다. 그러나 일련의 이벤트 발생 과정은 e.stopPropergation() 의 호출 여부와 무관합니다.
keydown과 keyup은 눌린 키에 대해 알려주며, keypress는 어떤 글자가 입력되었는지에 대해 알려줍니다.
input 이벤트는 키 입력이 아닌 값 변화를 핸들링할 때 유용합니다.
참고 : https://developer.mozilla.org/en-US/docs/Web/API/Document/keydown_event
아마도 제가 해석한 게 맞다면,
기본적으로
에 따라 갈리는 듯합니다.
참고로 keypress 이벤트는 non-printable key에 대해서는 트리거 되지 않는다고 합니다.(https://developer.mozilla.org/ko/docs/Web/API/GlobalEventHandlers/onkeypress#Browser_compatibility_notes)
CompositionEvent 인터페이스를 상속합니다.
[composition 이벤트 발생 순서]
조합문자 특성상 하나의 세션에 대해 start -> update (n번) -> end 순서로 사이클이 돌게 됩니다.
또한 팁으로서, e.isComposing === true || e.keyCode === 229
로 IME 조합 문자 입력 여부를 판단할 수 있습니다.
return false
return false
는 즉시 이벤트 핸들러를 반환하여, 동작을 중지할 수 있습니다. 그래서 대부분의 경우 해당 방법으로 이벤트 핸들러를 취소할 수 있습니다.
🚨
return false
는preventDefault()
와 동치가 아닙니다.preventDefault()
는stopPropagation()
을 호출하지 않지만,return false
는 호출합니다.
해당 이벤트의 기본 동작을 방지합니다. 사용자 에이전트 별로 여러 이벤트에 대한 기본 동작이 정해져있습니다.
💡 취소 불가능한 이벤트에 대해서는 아무런 동작을 하지 않습니다.
🚨 해당 함수는 이벤트 전파를 막지는 않습니다.
이벤트 버블링과 캡쳐링에 대해, 현재 이벤트 이후의 전파를 막습니다. 따라서 keyboard event의 일련의 발생을 막을 수 없습니다.
이 함수는 한 요소에 등록된, 동일한 이벤트 핸들러에 대해, 이후 이벤트 핸들러의 실행을 방지합니다.
const button = ...;
button.addEventListener("click", (e) => {
console.log("foo");
e.stopImmediatePropagation();
});
button.addEventListener("click", (e) => {
console.log("bar");
});
위 예제의 경우, 버튼을 클릭했을 때, "foo"
만 출력이 됩니다.
💡 같은 이벤트 네임에 대한 핸들러들은 등록 순서에 따라 호출이 됩니다.
취소 가능 여부는 e.cancelable
에 의존하며, 이 값은 이벤트 초기화 시에 판별됩니다.
참고 : https://developer.mozilla.org/ko/docs/Web/API/Event/cancelable
이벤트에 대한 자세한 정보들은 W3C UI Events 스펙에서 확인할 수 있습니다.