Opened 4 years ago

Last modified 3 years ago

#14329 review Bug

Typing Japanese with Windows IME on IE 11 does not fire change events

Reported by: Nick M Owned by: kkrzton
Priority: Nice to have (we want to work on it) Milestone:
Component: General Version: 4.4.4
Keywords: Cc:

Description

Steps to reproduce

  1. Set up a Japanese IME keyboard on Windows (instructions here http://jlptbootcamp.com/2012/02/how-to-type-in-japanese-with-the-microsoft-ime-on-windows/)
  2. Go to nightly ckeditor build in IE 11
  3. Add a simple change hander in the console window that logs change events.

CKEDITOR.instances.editor.on('change', function(e) { console.log(this.getData()); })

  1. Change your input type to Hiragana and type something in like "Arigato". Press space to open the dropdown selector and pick one of the options or just press "enter" to confirm the word.

Expected result

When you confirm your composite word, the change event should fire and log the word typed.

Actual result

The change event does not fire.

Other details (browser, OS, CKEditor version, installed plugins)

Chrome seems to fire change events on nearly every keypress in IME mode. Firefox only does it when a word is "confirmed." I think Firefox has the right behavior, but really either is fine as long as the change event eventually fires. I have not tried IE10 or below, but I'm betting they have the same issues.

Change History (16)

comment:1 Changed 4 years ago by Jakub Ś

  • In Blink change event is fired with every key press, it is not fired for confirmation (when enter is pressed) but it is fired twice when you move to new line (when enter is pressed for the second time)
  • In IE10-11 change event is not fired for confirmation (when enter is pressed) but it is fired twice when you move to new line (when enter is pressed for the second time)
  • In FF change event is fired for confirmation (when enter is pressed).

The change event is composed of many other events and it is possible there is some room for improvement. It would be nice to unify that behaviour.

NOTE: I have set version 4.4.4 because starting from that version Blink reports every character pressed.

comment:2 Changed 4 years ago by Jakub Ś

Component: Core : Undo & RedoGeneral
Keywords: IME change removed
Status: newconfirmed
Version: 4.5.7 (GitHub - master)4.4.4

comment:3 Changed 4 years ago by Marek Lewandowski

Milestone: CKEditor 4.5.8

comment:4 Changed 4 years ago by kkrzton

Owner: set to kkrzton
Status: confirmedassigned

comment:5 Changed 4 years ago by kkrzton

Considering also canceling composition (so the word is not inserted) or blurring editor while composition is active:

  • In Blink, due to firing change on every key press, it is also fired for keys which cancels composition (backspace, delete, esc). Change is not fired when during composition editor loses focus (which means end of composition and word/s are inserted - native compositionend and input events are fired).
  • In FF, change event is only fired after inserting word, but it is also fired when canceling composition (backspace, delete, esc) - same as in Blink. When losing focus during composition, FF behaves same as Blink.
  • In IE (tested on IE11) change event is not fired. Native events like compositionend and textinput are fired when composited word is inserted or canceled and are also fired when editor loses focus during composition.

Native events firing tested here. Also Japanese keyboard on Ubuntu.

comment:6 Changed 4 years ago by kkrzton

Reported a bug in IE11, which is unfortunately connected with typing Japanese inside contenteditable. Some workaround may be needed in future. https://connect.microsoft.com/IE/feedback/details/2322126/ie11-incorrect-number-of-keyup-events-for-enter-fired-after-inserting-japanese-symbols-inside-contenteditable-element

comment:7 Changed 4 years ago by kkrzton

Status: assignedreview

Changes in t/14329.

Introduce fix for IE using compositionend event to handle end of composition. Added also workarounds for IE8 and Edge.

comment:8 Changed 4 years ago by Marek Lewandowski

Milestone: CKEditor 4.5.8CKEditor 4.5.9

comment:9 Changed 4 years ago by Marek Lewandowski

Milestone: CKEditor 4.5.9CKEditor 4.5.10

comment:10 Changed 4 years ago by taeiou

I'm also being affected by this issue. It has been set to review 3 months ago, any estimate of when it will actually be ready to roll out? Thank you!

comment:11 Changed 4 years ago by Marek Lewandowski

@taeiou We're currently working on many CKEditor-related projects. And are not able to push all the fixes, however this issue having a milestone shows that it's on our track. You can get updates by following this ticket.

Your comment already is a good sign for us that there is a demand for this feature, so we are taking this into consideration - but currently we're not able to guarantee any precise ETA. If you're commited to this issue, and would like it to be solved asap, you could always contact CKSource for possible options on prioritizing this ticket.

comment:12 Changed 3 years ago by Marek Lewandowski

Milestone: CKEditor 4.5.10CKEditor 4.5.11

Moving tickets to the next milestone.

comment:13 Changed 3 years ago by Marek Lewandowski

Milestone: CKEditor 4.5.11CKEditor 4.6.1

comment:14 Changed 3 years ago by Marek Lewandowski

Milestone: CKEditor 4.6.1CKEditor 4.6.2

Moving to 4.6.2 minor release, as 4.6.1 is mostly about polishing 4.6.0.

comment:15 Changed 3 years ago by Kirill

Simple workaround is to listen to the compositionend event. Should be something like this: CKEDITOR.instances.editor.editable().$.addEventListener('compositionend', yourhandlerfunction, false); Hope this helps.

comment:16 Changed 3 years ago by Marek Lewandowski

Milestone: CKEditor 4.6.2
Priority: NormalNice to have (we want to work on it)

Moving to the nice to have list.

Note: See TracTickets for help on using tickets.
© 2003 – 2019 CKSource – Frederico Knabben. All rights reserved. | Terms of use | Privacy policy