Attributes

For compositionstart events, this is the currently selected text that will be replaced by the string being composed. This value doesn't change even if content changes the selection range; rather, it indicates the string that was selected when composition started.

For compositionupdate, this is the string as it stands currently as editing is ongoing.

For compositionend events, this is the string as committed to the editor.

Gecko notes

The compositionstart and compositionend events were fired in versions of Gecko before 9.0, but didn't have the DOM Level 3 attributes and methods. In addition, support for the compositionupdate event was added in Gecko 9.0 (Firefox 9.0 / Thunderbird 9.0 / SeaMonkey 2.6).

Note: Gecko doesn't support the locale attribute for trusted events yet. However, web developers can set this value via initCompositionEvent() when creating untrusted events.

Gecko's editors (for example, <input type="text">, <div contenteditable/>, and designMode) start composition after the bubble phase of compositionstart. So, by the time your compositionstart handler is called, no contents have not been modified.

Gecko's editors don't handle the compositionupdate event yet. By the time your compositionupdate handler is called, no contents have been modified.

By the time your compositionend event handler is called, composition is complete, and no further changes will occur. For that reason, if you call event.stopPropagation() on the compositionstart or compositionend event, you can break composition behavior and cause editors to fail to manage editing properly. See bug 697842 for progress on this problem getting fixed.