(wrong string) 入法打字時 input.value 被更改的鎯呭舰

2011/6/15 Kang-Hao (Kenny) Lu <kennyluck@w3.org>

>
> > 1. 阻塞脚本。不过这也会阻塞ui。所以只适用于手机等设备。
>
> >
> 我不太懂為什麼手機等設備沒有問題,敬請指教。
>
>
因为手机等设备上输入法本身就可认为是一个阻塞式的模态对话框。



Hixie写的,就是IE的行为貌似。

关于FF的做法,FF的做法只是小的优化(value不变时不做任何改动)。关键是保持一致。例如说明这个行为是由MutationEvent事件触发。

可以比照的是input事件,该事件是由html5规范定义的。按照当前规范,input事件可以由延迟(即多次快速击键只产生一次input事件),并且在value值不改变时不会发生(但目前浏览器均未完全符合,在copypaste一个恰好相同的值时仍然会触发input)。不过input只针对用户操作,脚本修改value并不会触发。

好在即使浏览器没有内置这种优化,开发者很容易通过脚本实现。即使行为有一些小差异,也不至于对开发者造成严重影响。


> > 当使用输入法时,我个人感觉取消输入法已经输入的内容不是很好,会严重干扰
> > 最终用户。所以还是和不用输入法时一样, 仅仅移动光标到最后。
>
> 同意,我信裡也是@樣寫的,不過 Hixie 的回答是輸入法是 UI 的東西不在規範
> 範圍內所以不寫進 HTML5。@我不太服氣,因為我覺得@好像會影響瀏覽器觸發
> DOM3 Events 的 compositionend[4] 事件的個數。但我還不清楚@個事件的實作
> 情形,手上也沒有 IE (有 CompositionEvent 的實作)可以試驗一下。
>
>
IE(测了IE8)没有compositionEvent。
实际上我没有见过cancel ime输入的例子。

compositionevent实现的情形方面。FF不支持compositionupdate,也不支持data属性,因此无法得到进行输入法输入时的状态。
而chrome支持compositionupdate和data属性,但是Chrome有个问题就是在compositionupdate之后居然会触发input事件(修改了input
value),这是有问题的。所以情况就是,要么没有,要么画蛇添足了。

Received on Wednesday, 15 June 2011 10:07:49 UTC