Spec-Zone.ru › Web APIs

EditContext: событие characterboundsupdate

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

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

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

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

Событие characterboundsupdate срабатывает, когда операционная система нуждается в границах определенных символов в области редактируемого текста объекта EditContext.

Это происходит, когда операционная система нуждается в отображении платформенно-специфической пользовательской интерфейсной поверхности для редактирования, например, окна Input Method Editor (IME).

При срабатывании события characterboundsupdate, необходимо рассчитать границы символов текста и вызвать метод EditContext.updateCharacterBounds(), чтобы предоставить операционной системе необходимую информацию.

Для получения дополнительной информации о том, когда и как использовать событие characterboundsupdate, обратитесь к документации метода updateCharacterBounds.

Синтаксис

Используйте имя события в методах, например, addEventListener(), или задайте обработчик события.

addEventListener("characterboundsupdate", (event) => {});

oncharacterboundsupdate = (event) => {};

Тип события

Объект CharacterBoundsUpdateEvent. Наследуется от Event.

Свойства события

Помимо перечисленных ниже свойств, доступны свойства из родительского интерфейса Event.

CharacterBoundsUpdateEvent.rangeStart Только для чтения

Смещение первого символа в тексте редактируемой области, для которого операционной системе необходимы границы.

CharacterBoundsUpdateEvent.rangeEnd Только для чтения

Смещение последнего символа в тексте редактируемой области, для которого операционной системе необходимы границы.

Примеры

Обновление границ символов при необходимости

Этот пример демонстрирует, как использовать метод updateCharacterBounds для обновления границ символов в EditContext элемента canvas при указании операционной системой необходимости этой информации. Обратите внимание, что обработчик события вызывается только при использовании окна IME или других платформенно-специфических поверхностей пользовательского интерфейса для редактирования для составления текста.

<canvas id="editor-canvas"></canvas>
const FONT_SIZE = 40;
const FONT = `${FONT_SIZE}px Arial`;

const canvas = document.getElementById("editor-canvas");
const ctx = canvas.getContext("2d");
ctx.font = FONT;

const editContext = new EditContext();
canvas.editContext = editContext;

function computeCharacterBound(offset) {
  // Measure the width from the start of the text to the character.
  const widthBeforeChar = ctx.measureText(
    editContext.text.substring(0, offset),
  ).width;

  // Measure the character width.
  const charWidth = ctx.measureText(editContext.text[offset]).width;

  const charX = canvas.offsetLeft + widthBeforeChar;
  const charY = canvas.offsetTop;

  // Return a DOMRect representing the character bounds.
  return DOMRect.fromRect({
    x: charX,
    y: charY - FONT_SIZE,
    width: charWidth,
    height: FONT_SIZE,
  });
}

editContext.addEventListener("characterboundsupdate", (e) => {
  const charBounds = [];
  for (let offset = e.rangeStart; offset < e.rangeEnd; offset++) {
    charBounds.push(computeCharacterBound(offset));
  }

  console.log("The required character bounds are", charBounds);
  editContext.updateCharacterBounds(e.rangeStart, charBounds);
});

Спецификации

Спецификация
API EditContext
# dom-editcontext-oncharacterboundsupdate

Совместимость браузеров

Десктоп Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
characterboundsupdate_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/characterboundsupdate_event

Spec-Zone.ru

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