IDL
[Exposed=Window] interface CharacterData : Node { attribute [LegacyNullToEmptyString] DOMString data; readonly attribute unsigned long length; DOMString substringData(unsigned long offset, unsigned long count); undefined appendData(DOMString data); undefined insertData(unsigned long offset, DOMString data); undefined deleteData(unsigned long offset, unsigned long count); undefined replaceData(unsigned long offset, unsigned long count, DOMString data); };
Примечание!
CharacterData — это абстрактный интерфейс, который не существует как узел. Он используется узлами Text, ProcessingInstruction и Comment.
Каждый узел, наследующий от интерфейса CharacterData, имеет связанную изменяемую строку, которую называют «данные» (data).
Чтобы «заменить данные» (replace data) узла node на смещение offset, счетчик count и данные data, выполните следующие действия:
1. Пусть length будет длиной node. 2. Если смещение offset больше длины length, генерируется исключение DOMException "IndexSizeError". 3. Если смещение offset плюс счетчик count больше, чем длина length, установите count как length минус offset. 4. Поставить в очередь запись мутации "characterData" для узла node с null, null, данными node, «», «», null и null. 5. Вставить data в данные node после смещения offset единиц кода . 6. Пусть смещение удаления delete offset будет offset + длина данных data. 7. Начиная с единиц кода удаления смещения delete offset, удалите единицы кода count из данных node. 8. Для каждого живого диапазона, начальным узлом которого является узел node, а начальное смещение больше смещения offset, но меньше или равно offset плюс count, установите его начальное смещение равным offset. 9. Для каждого живого диапазона, конечный узел которого является узлом node, а конечное смещение больше смещения offset, но меньше или равно offset плюс count, установите его конечное смещение на offset. 10. Для каждого живого диапазона, у которого начальным узлом является узел node, а начальное смещение больше, чем смещение offset плюс count, увеличьте его начальное смещение на длину данных data и уменьшите его на счетчик count. 11. Для каждого живого диапазона, конечным узлом которого является узел node, а конечное смещение больше, чем смещение offset плюс count, увеличьте его конечное смещение на длину данных data и уменьшите его на счетчик count. 12. Если родитель узла node не равен null, выполните шаги изменения детей для родителя узла node.
Чтобы «под-строчить данные» (substring data) с узлом node, смещением offset и счетчиком count, выполните следующие действия:
1. Пусть length будет длиной узла node. 2. Если смещение offset больше длины length, генерируется исключение DOMException "IndexSizeError". 3. Если смещение offset плюс счетчик count больше длины length, вернуть строку, значение которой представляет собой единицы кода от единицы кода смещения offset до конца данных узла node, а затем вернуть. 4. Возвращает строку, значение которой является единицей кода от единицы кода смещения offset до единицы кода смещения offset + счетчика count в данных узла node.
Получатель атрибута data должен возвращать данные этого this. Его установщик должен заменить данные с узлом this, смещение 0, подсчитать длину этого this и новое значение данных.
Получатель атрибута length должен возвращать длину этого this.
Метод substringData(offset, count) при вызове должен возвращать результат выполнения под-строчивания данных с узлом этого this, смещением offset и счётчиком count.
Метод appendData(data) при вызове должен заменять данные с узлом этого this, смещением длины этого this, счетчиком 0 и данными data.
Метод insertData(offset, data) при вызове должен заменить данные с узлом этого this, смещением offset, счетчиком 0 и данными data.
Метод deleteData(offset, count) при вызове должен заменить данные с узлом этого this, смещением offset, счетчиком count и данными пустой строки.
Метод replaceData(offset, count, data) при вызове должен заменить данные с узлом этого this, смещением offset, счетчиком count и данными data.
Ссылки
DOM стандарт — https://efim360.ru/dom/
Читайте перевод полной версии стандарта «объектной модели документа», чтобы ознакомиться со всеми концепциями и интерфейсами.
DOM — Living Standard — https://dom.spec.whatwg.org
Читайте официальную документацию живого стандарта «объектной модели документа», чтобы быть в курсе последних изменений.