Типы событий пользовательского интерфейса CompositionEvent

События композиции предоставляют средства для ввода текста дополнительным или альтернативным способом, а не событиями клавиатуры, чтобы разрешить использование символов, которые могут быть недоступны на клавиатуре.

Например, события композиции могут использоваться для добавления акцентов к символам, несмотря на их отсутствие на стандартных клавиатурах США, для создания логограмм многих азиатских языков из их базовых компонентов или категорий, для выбора вариантов слов из комбинации нажатий клавиш клавиатуры на мобильном устройстве или для преобразования голосовых команд в текст с помощью процессора распознавания речи.

Тип события композиции — compositionstart

Тип события клавиатурыcompositionstart
ИнтерфейсCompositionEvent
Синх / АсинСинхронный
ВсплытиеДа
Надежные целиElement
ОтменяемыйДа
СдержанныйДа
Действие по умолчаниюНачинает новый сеанс композиции, когда включена система композиции текста
Контекст (доверенные события)Event.target : сфокусированный элемент обработки композиции
UIEvent.view : Window
UIEvent.detail : 0
CompositionEvent.data : исходная редактируемая строка, в противном случае пустая строка

Агент пользователя должен отправить это событие, когда система композиции текста включена и новый сеанс композиции вот-вот начнется (или уже начался, в зависимости от системы композиции текста) при подготовке к составлению отрывка текста. Этот тип событий зависит от устройства и может зависеть от возможностей системы преобразования текста и от того, как она отображается в операционной системе. Когда клавиатура используется для подачи редактора методов ввода, этот тип события генерируется после события keydown, но системы распознавания речи или рукописного ввода могут отправлять этот тип события без событий клавиатуры. Некоторые реализации могут заполнять атрибут data события compositionstart текстом, выбранным в данный момент в документе (для редактирования и замены). В противном случае значение атрибута data должно быть пустой строкой.

Это событие должно быть отправлено непосредственно перед тем, как система композиции текста начнет новый сеанс композиции, и до того, как DOM будет изменен из-за процесса композиции. Действие по умолчанию этого события заключается в том, что система композиции текста запускает новый сеанс композиции. Если это событие отменено, система композиции текста должна отменить текущий сеанс композиции.

Отмена типа события compositionstart отличается от отмены самой системы композиции текста (например, нажатием кнопки отмены или закрытием окна IME).

Некоторые IME не поддерживают отмену текущего сеанса композиции (например, GTK, который в настоящее время не имеет такого API). В этих случаях вызов функции preventDefault() не остановит действие этого события по умолчанию.

Тип события композиции — compositionupdate

Тип события клавиатурыcompositionupdate
ИнтерфейсCompositionEvent
Синх / АсинСинхронный
ВсплытиеДа
Надежные целиElement
ОтменяемыйНет
СдержанныйДа
Действие по умолчаниюНе определено
Контекст (доверенные события)Event.target : сфокусированный элемент обработки композиции, null, если он недоступен
UIEvent.view : Window
UIEvent.detail : 0
CompositionEvent.data : строка, содержащая текущие результаты сеанса композиции, которая может быть пустой строкой, если содержимое было удалено

Агент пользователя должен отправить это событие во время сеанса композиции, когда система композиции текста обновляет свой активный текстовый пассаж новым символом, который отражается в строке в данных data.

В системах композиции текста, которые поддерживают текущую композицию в синхронизации с входным элементом управления, событие compositionupdate должно быть отправлено до обновления элемента управления.

Некоторые системы композиции текста могут не предоставлять эту информацию DOM, и в этом случае это событие не будет срабатывать во время процесса композиции.

Если сеанс композиции отменен, это событие будет запущено непосредственно перед событием compositionend, и атрибут data будет установлен в пустую строку.

Тип события композиции — compositionend

Тип события клавиатурыcompositionend
ИнтерфейсCompositionEvent
Синх / АсинСинхронный
ВсплытиеДа
Надежные целиElement
ОтменяемыйНет
СдержанныйДа
Действие по умолчаниюНе определено
Контекст (доверенные события)Event.target : сфокусированный элемент обработки композиции
UIEvent.view : Window
UIEvent.detail : 0
CompositionEvent.data : строка, содержащая конечный результат сеанса композиции, который может быть пустой строкой, если содержимое было удалено или если процесс композиции был отменен

Агент пользователя должен отправить это событие, когда система композиции текста завершает или отменяет текущий сеанс композиции, а событие compositionend должно быть отправлено после обновления элемента управления.

Это событие отправляется сразу же после того, как система композиции текста завершает сеанс композиции (например, IME закрывается, сворачивается, переключается из фокуса или иным образом отклоняется, и фокус возвращается к агенту пользователя).

Полная версия документа на русском языке

UI Events | События пользовательского интерфейса

Ссылка на первоисточник

https://www.w3.org/TR/uievents/#events-composition-types

Поделись записью