compositionstart
事件触发于一段文字的输入之前(类似于 keydown
事件,但是该事件仅在若干可见字符的输入之前,而这些可见字符的输入可能需要一连串的键盘操作、语音识别或者点击输入法的备选词)。
Bubbles | Yes |
Cancelable | Yes |
Target objects | Element |
Interface | TouchEvent |
属性
Property | Type | Description |
---|---|---|
target 只读 只读 |
EventTarget |
焦点所在的,处理文字输入的元素。 |
type 只读 |
DOMString |
The type of event. |
bubbles 只读 |
boolean |
Does the event normally bubble? |
cancelable 只读 |
boolean |
Is it possible to cancel the event? |
view 只读 |
WindowProxy |
Document.defaultView (window of the document) |
detail 只读 |
long (float ) |
0. |
data |
DOMString (string) |
要被替换掉的字符串,如果输入时没有字符串被选,则为空字符串。只读。 |
locale |
DOMString (string) |
输入事件的语言代号,或者空字符串。只读。 |
浏览器兼容性
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | (Yes)[1] | 9.0 (9.0)[2] | (Yes)[3] | 未实现 | (Yes)[1] |
Feature | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
Basic support | ? | 9.0 (9.0)[2] | ? | ? | ? |
[1] data 属性的内容是错误的。
[2] 在 Gecko 9.0 之前的版本中能触发,但是没有 DOM Level 3 规定的属性和方法。
Gecko 暂时在可信的事件(trusted events)中不支持 locale
属性。 但是,开发者可以在创建一个不可信事件时指定该值,创建事件请使用 initCompositionEvent()
。
根据 DOM Level3 标准, compositionstart
是可取消的事件,但 Gecko 目前还不允许取消输入。
Gecko 出发该事件于输入法开始输入之时,然而在某些系统上没有相关 API 来取消一个刚刚开始的输入。此外,Gecko 在输入法真正开始输入之前,无法判断一个键盘事件是否意味着输入的开始。因此,Gecko 在 compositionstart
中不能用 event.preventDefault()
。
Gecko 编辑器(例如 <input type="text">
, <div contenteditable/>
, 以及 designMode
)的文字输入开始于 compositionstart
冒泡阶段之后,因此当你的 compositionstart
回调函数运行时,编辑器的内容不会有变化。
[3] data 值总是空白的。