compositionstart

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 值总是空白的。

相关事件

文档标签和贡献者