Ho creato un semplice violino per determinare cosa succede quando un nodo di testo in un elemento contenteditable viene modificato da una pressione di un tasto. Mentre lo facevo, ho deciso di controllare cosa succede quando uso ibus perché uso ibus per il mio lavoro. Ho determinato che quando viene utilizzato ibus, l'unico evento tastiera generato è un evento keyup con un valore which
che è inutile.
Ecco il violino che ho creato:
http://jsfiddle.net/lddubeau/jWnL3/
andare a quel violino.
Attiva la tua console Javascript.
Fare clic su Esegui.
Fare clic tra il 2dn e il terzo carattere della parola "toto".
Digitare qualcosa usando ibus. Ad esempio, digita 我.
L'output varia a seconda del browser. Su Chrome 29 ogni tasto viene registrato, quindi se digito 我 utilizzando il metodo tonepy ottengo keyup e keydown per ciascuno dei "w" "o" "3" e "1". (Il pinyin, il tono e premendo 1 per selezionare la prima scelta.) L'evento finale è:
event type: keyup
which: 229
keyCode: 229
charCode: 0
node value:
to我to
Gli eventi prima di questo tutti hanno gli stessi valori, tranne che alcuni sono di tipo "keydown" e ovviamente il valore del nodo mostra "toto" fino all'ultimo evento.
Su Firefox 23 un solo evento è registrato: eventi
"event type:" "keyup"
"which:" 49
"keyCode:" 49
"charCode:" 0
"node value:" "
to我to
"
No KeyDown o di pressione dei tasti sono generati. (Quando si digita i caratteri ascii all'interno della gamma, si ottiene keydown, pressione di un tasto e keyup per ogni tasto.)
I valori di cui e keyCode non sembrano corrispondere a qualcosa di sensato. Ho esaminato l'oggetto evento passato al gestore eventi e non ho visto alcun campo che indicherebbe che l'utente ha appena digitato 我.
Ti dispiacerebbe elaborare più sul tuo caso d'uso? forse l'unico modo per ottenere ciò è fornire un metodo di input basato sul web. –