当浏览器有非直接的文字输入时, compositionstart
事件会以同步模式触发.通常情况是由于用户使用一个输入法来输入文字.该事件实现的接口为CompositionEvent
.
注意: 该事件应该发生在使用输入法输入文字之前, 但是在Gecko上, 不是这样的;Gecko会在输入法开始输入文字时,马上触发该事件.
- <dfn style="display:table-cell;padding: 0 5px;border-bottom: none;cursor:inherit;">实现接口:</dfn>
CompositionEvent
- <dfn style="display:table-cell;padding: 0 5px;border-bottom: none;cursor:inherit;">是否同步模式:</dfn>同步模式
- <dfn style="display:table-cell;padding: 0 5px;border-bottom: none;cursor:inherit;">是否冒泡:</dfn> 是
- <dfn style="display:table-cell;padding: 0 5px;border-bottom: none;cursor:inherit;">Target属性:</dfn>
Element
- <dfn style="display:table-cell;padding: 0 5px;border-bottom: none;cursor:inherit;">默认动作是否可以被取消:</dfn> 是 (查看浏览器具体实现情况)
- <dfn style="display:table-cell;padding: 0 5px;border-bottom: none;cursor:inherit;">默认动作 :</dfn> 无
规范
浏览器兼容性
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | (Yes) 事件对象的data属性值不正确 | 9.0 (9.0) | (Yes) 事件对象的data属性值总为空 | Not supported | (Yes) 事件对象的data属性值不正确 |
Feature | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
Basic support | ? | 9.0 (9.0) | ? | ? | ? |
Gecko 注意事项
根据 DOM Level3 规定, compositionstart
事件的默认动作是可以被取消的; 可是, 在目前,Gecko还不让用户取消它.这是由于:
当用户启动输入法开始输入时,compositionstart
事件被触发.一些操作系统没有提供相关API来取消这个默认动作.此外, Gecko不知道一个键盘事件是否会启动输入法来输入字符,直到它真正的开始输入以后. 因此, 在Gecko上,event.preventDefault()
在 compositionstart
事件中不可用 .