Spec-Zone.ru › Web APIs

EditContext: событие textformatupdate

Ограниченная доступность

Эта функция не относится к Baseline, так как она не работает в некоторых из самых широко используемых браузеров.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Экспериментально: Это экспериментальная технология
Перед использованием в рабочей среде внимательно изучите таблицу совместимости браузеров.

Событие textformatupdate интерфейса EditContext срабатывает при составлении текста с использованием окна Input Method Editor (IME).

Событие срабатывает, когда IME определяет, что определённые части вводимого текста должны быть отформатированы по-разному для индикации состояния составления текста.

На следующем снимке экрана показан пример набора текста в приложении «Блокнот» в Windows с использованием японской IME. Текст отформатирован с помощью жирной подчёркивания для указания того, что он был составлен из одного из предложений IME.

Notepad on Windows with some Japanese text being composed from the IME window

Как разработчик веб-приложений, вы должны прослушивать событие 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API