EditContext: событие textformatupdate
Ограниченная доступность
Эта функция не относится к Baseline, так как она не работает в некоторых из самых широко используемых браузеров.
Экспериментально: Это экспериментальная технология
Перед использованием в рабочей среде внимательно изучите таблицу совместимости браузеров.
Событие textformatupdate интерфейса EditContext срабатывает при составлении текста с использованием окна Input Method Editor (IME).
Событие срабатывает, когда IME определяет, что определённые части вводимого текста должны быть отформатированы по-разному для индикации состояния составления текста.
На следующем снимке экрана показан пример набора текста в приложении «Блокнот» в Windows с использованием японской IME. Текст отформатирован с помощью жирной подчёркивания для указания того, что он был составлен из одного из предложений IME.
Как разработчик веб-приложений, вы должны прослушивать событие textformatupdate и соответственно обновлять форматирование текста, отображаемого в вашей области редактирования.
Синтаксис
Используйте имя события в методах, таких как addEventListener(), или установите свойство обработчика событий.
addEventListener("textformatupdate", (event) => {});
ontextformatupdate = (event) => {};
Тип события
Объект TextFormatUpdateEvent. Наследуется от Event.
Свойства события
Помимо перечисленных ниже свойств, доступны свойства из родительского интерфейса Event.
TextFormatUpdateEvent.getTextFormats-
Возвращает список форматов текста, которые окно IME хочет применить к тексту.
Примеры
Отображение форматирования текста составления IME
В следующем примере событие textformatupdate используется для обновления форматирования текста в области редактирования. Обратите внимание, что обратный вызов обработчика событий в этом примере вызывается только при использовании окна IME или других платформных пользовательских интерфейсов редактирования для составления текста.
<canvas id="editor-canvas"></canvas>
const TEXT_X = 10;
const TEXT_Y = 10;
const canvas = document.getElementById("editor-canvas");
const ctx = canvas.getContext("2d");
const editContext = new EditContext();
canvas.editContext = editContext;
editContext.addEventListener("textformatupdate", (e) => {
// Clear the canvas.
ctx.clearRect(0, 0, canvas.width, canvas.height);
// Render the text.
ctx.fillText(editContext.text, TEXT_X, TEXT_Y);
// Get the text formats that the IME window wants to apply.
const formats = e.getTextFormats();
// Iterate over the text formats
for (const format of formats) {
const { rangeStart, rangeEnd, underlineStyle, underlineThickness } = format;
const underlineXStart = ctx.measureText(
editContext.text.substring(0, rangeStart),
).width;
const underlineXEnd = ctx.measureText(
editContext.text.substring(0, rangeEnd),
).width;
const underlineY = TEXT_Y + 3;
// For brevity, this example only draws a simple underline.
// You should use the underlineStyle and underlineThickness values to draw the underline.
ctx.beginPath();
ctx.moveTo(TEXT_X + underlineXStart, underlineY);
ctx.lineTo(TEXT_X + underlineXEnd, underlineY);
ctx.stroke();
}
});
Спецификации
| Спецификация |
|---|
| API EditContext # dom-editcontext-ontextformatupdate |
Совместимость браузеров
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
textformatupdate_event |
121 | 121 | Нет | 107 | Нет | 121 | Нет | 81 | Нет | 25.0 | 121 |
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/EditContext/textformatupdate_event