DOM | Интерфейс Text

IDL

[Exposed=Window]
interface Text : CharacterData {
   constructor(optional DOMString data = "");

   [NewObject] Text splitText(unsigned long offset);
   readonly attribute DOMString wholeText;
};

Для веб-разработчиков (не нормативно)

text = new Text([data = «»])

Возвращает новый текстовый узел Text, данные которого являются data.

text . splitText(offset)

Разделяет данные по заданному смещению offset и возвращает остаток как текстовый узел Text.

text . wholeText

Возвращает объединенные данные всех прямых братьев и сестер (родственников) текстового узла Text.

 

«Эксклюзивный узел Text»  (exclusive Text node) — это текстовый узел Text, который не является узлом CDATASection.

«Смежными узлами Text» (contiguous Text nodes) узла node являются node, узел Text предыдущего родственника node, если он есть, и его смежные узлы Text, и узел Text следующего родственника node, если есть, и его смежные узлы Text, избегая любых дубликатов.

«Смежные эксклюзивные узлы Text» (contiguous exclusive Text nodes) узла node — это node, предыдущего родственника эксклюзивный узел Text node, если таковой имеется, и его смежные эксклюзивные узлы Text, и следующий родственник эксклюзивный узел Text, если таковой имеется, и его смежные эксклюзивные узлы Text, избегая любых дубликатов.

«Текстовое содержимое ребёнка» (child text content) узла node — это объединение данных всех детей узла Text из node в древовидном порядке.

«Текстовое содержимое потомка» (descendant text content) узла node — это объединение данных всех потомков узла Text из node в древовидном порядке.

 

Конструктор Text(data) при вызове должен возвращать новый узел Text, данные которого являются data, а документ узла — это связанный Document текущего глобального объекта.

Чтобы «разделить» (split) узел Text node со смещением offset, выполните следующие действия:

1. Пусть length будет длиной узла node.
2. Если смещение offset больше длины length, генерируется исключение DOMException "IndexSizeError".
3. Пусть count будет length минус offset.
4. Пусть новые данные new data будут результатом подстроки данных с узлом node, смещением offset и счетчиком count.
5. Пусть новый узел new node будет новым узлом Text с тем же документом узла, что и node. Установите данные new node на new data.
6. Пусть parent будет родителем узла node.
7. Если parent не равен null, тогда:
   1. Вставить новый узел new node в parent до следующего родственника узла node.
   2. Для каждого живого диапазона, чей начальный узел является node, а начальное смещение больше offset, установите его начальный узел на new node и уменьшите его начальное смещение на offset.
   3. Для каждого активного диапазона, конечным узлом которого является node, а конечное смещение больше offset, установите его конечный узел на new node и уменьшите его конечное смещение на offset.
   4. Для каждого живого диапазона, начальный узел которого является parent, а начальное смещение равно индексу node плюс 1, увеличьте его начальное смещение на 1.
   5. Для каждого живого диапазона, конечный узел которого является parent, а конечное смещение равно индексу node плюс 1, увеличьте его конечное смещение на 1.
8. Замените данные с узлом node, смещением offset, счетчиком count и данными пустой строкой.
9. Верните new node.

Метод splitText(offset) при вызове должен разделить этого this со смещением offset.

Получатель атрибута wholeText должен возвращать конкатенацию данных смежных узлов Text этого this в древовидном порядке.

 

Ссылки

DOM стандарт — https://efim360.ru/dom/

Читайте перевод полной версии стандарта «объектной модели документа», чтобы ознакомиться со всеми концепциями и интерфейсами.

DOMLiving Standardhttps://dom.spec.whatwg.org

Читайте официальную документацию живого стандарта «объектной модели документа», чтобы быть в курсе последних изменений.

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