各种笔记 – Input events across browsers - the-dissidents/subtle GitHub Wiki
Note: beforeinput (omitted here for conciseness) is always fired just before input and has the same event data as the latter.
Input a lower-case a
macOS / Chrome
keydown– key:acode:KeyAinput– inputType:insertText, data:akeyup– key:acode:KeyA
macOS / Safari
The same.
Pressing Backspace
macOS / Chrome
keydown– key:Backspacecode:Backspaceinput– inputType:deleteContentBackwardkeyup– key:Backspacecode:Backspace
macOS / Safari
The same.
Input œ by Option+Q
macOS / Chrome
keydown– key:Altcode:AltLeftkeydown– key:œcode:KeyQinput– inputType:insertText, data:œ
then, if first releasing Q:
keyup– key:œcode:KeyQkeyup– key:Altcode:AltLeft
if first releasing Option:
keyup– key:Altcode:AltLeftkeyup– key:qcode:KeyQ
macOS / Safari
The same.
Input 好 by IME composition
macOS / Chrome
keydown– key:hcode:KeyHcompositionstart– data: empty stringinput– isComposing: true, inputType:insertCompositionText, data:hkeyup– key:hcode:KeyHkeydown– key:2code:Digit2input– isComposing: true, inputType:insertCompositionText, data:好compositionend– data:好keyup– key:2code:Digit2
macOS / Safari
See: https://bugs.webkit.org/show_bug.cgi?id=165004 (bug report from 2016!)
compositionstart– data: empty stringinput– isComposing: true, inputType:insertCompositionText, data:hkeydown– key:hcode:KeyHkeyup– key:hcode:KeyHinput– isComposing: true, inputType:deleteCompositionTextinput– isComposing: true, inputType:insertFromComposition, data:好compositionend– data:好keydown– key:2code:Digit2keyup– key:2code:Digit2
Input (fullwidth space) by Option+Space while under IME
macOS / Chrome
keydown– key:Altcode:AltLeftkeydown– key:(fullwidth) code:Spaceinput– inputType:insertText, data:(fullwidth)
then, if first releasing Space:
keyup– key:(fullwidth) code:Spacekeyup– key:Altcode:AltLeft
if first releasing Option:
keyup– key:Altcode:AltLeftkeyup– key:(halfwidth) code:Space
macOS / Safari
keydown– key:Altcode:AltLeftinput– inputType:insertText, data:(fullwidth)keydown– key:(fullwidth) code:Space
then, if first releasing Space:
keyup– key:(halfwidth) code:Spacekeyup– key:Altcode:AltLeft
if first releasing Option:
keyup– key:Altcode:AltLeftkeyup– key:(halfwidth) code:Space