Re: Proposal to ammend the composition event spec.

I didn't mean to derail the original proposal. As best I can tell, everyone
who has voiced an opinion agrees that compositionstart/compositionend should
bound all IME related DOM modifications and that textInput should fire
before the compositionEnd event.

Whether it also fires before compositionStart is totally orthogonal. We
should try to address that after we've come to a conclusion on the other
thread about extending textInput to other input modes.

Ojan

On Wed, Jun 16, 2010 at 6:08 PM, James Su <suzhe@google.com> wrote:

> To prevent all text input, I think the preferred way is to just cancel
> keydown event. In this case we don't need to care about textInput and
> composition events at all. It's also compatible with non-IME input mode. So
> I think textInput and composition events should not be fired at all if
> keydown is cancelled.
>
> Regards
> James Su
>
> 2010/6/16 Ojan Vafai <ojan@chromium.org>
>
> On Wed, Jun 16, 2010 at 2:38 PM, Ojan Vafai <ojan@chromium.org> wrote:
>>
>>> to type "wo" -> 我
>>>
>>> user "w"  <-- Canceling keydown should prevent the composition from
>>> starting and the DOM should not be modified.
>>>
>>
>> Upon further thought, I think we should also fire a textInput event here
>> (not sure if it should fire before or after compositionstart). "data" can
>> just be the empty string. It should be possible to only listen to textInput
>> and preventDefault to prevent all text insertion. You shouldn't need to
>> listen to both textInput and keydown/compositionstart.
>>
>>
>>> event compositionstart
>>> ("w")
>>>
>>> user "o"  <-- Not related to textInput since this keydown doesn't
>>> generate a textInput event. One cross-platform solution would be to cancel
>>> the composition.
>>> ("wo")
>>>
>>> user <space>  <-- Same as above.
>>> ("我")
>>>
>>> user <space> (to commit the composition) <-- Should cancel the textInput
>>> and thus cancel the composition.
>>>
>>> ("")
>>> event textInput (cancelable)
>>> ("我")
>>> event compositionend
>>>
>>> -Ojan
>>>
>>>
>>
>

Received on Thursday, 17 June 2010 01:48:35 UTC