He creado un violín simple para determinar qué sucede cuando un nodo de texto en un elemento contenteditable se modifica presionando una tecla. Mientras hacía eso, decidí verificar qué sucede cuando uso ibus porque uso ibus para mi propio trabajo. Decidí que cuando se usa ibus, el único evento de teclado generado es un evento de teclado con un valor de which
que es inútil.
Aquí es el violín creé:
http://jsfiddle.net/lddubeau/jWnL3/
ir a ese violín.
Enciende la consola Javascript.
haga clic en Ejecutar.
Haga clic entre el carácter 2dn y el tercer carácter de la palabra "toto".
Tipo algo con ibus. Por ejemplo, escribe 我.
La salida varía dependiendo de su navegador. En Chrome 29, se registra cada pulsación de tecla, de modo que si escribo 我 utilizando el método de tonetone, obtengo una clave y una clave para cada una de las "w" "o" "3" y "1". (El pinyin, el tono y luego oprimir 1 para seleccionar la primera opción.) El evento final es:
event type: keyup
which: 229
keyCode: 229
charCode: 0
node value:
to我to
Los eventos antes de éste todos tienen los mismos valores, excepto que algunos son del tipo "keydown" y por supuesto, el valor del nodo muestra "toto" hasta el último evento.
En Firefox 23 solo evento se registra: se generan eventos
"event type:" "keyup"
"which:" 49
"keyCode:" 49
"charCode:" 0
"node value:" "
to我to
"
Sin keydown o de pulsación de teclas. (Al escribir caracteres dentro del rango ASCII, se obtiene keydown, pulsación de tecla y keyup para cada tecla.)
Los valores de los cuales keyCode y no parecen corresponder a algo sensato. He examinado el objeto de evento pasado al controlador de eventos y no he visto ningún campo que indique que el usuario acaba de escribir 我.
¿Te importaría más sobre tu caso de uso? quizás la única manera de lograr eso es proporcionarle un método de entrada basado en la web. –