Я пытаюсь написать редактор разметки на основе JavaScript (WYSIWIG), используя объект выделения и диапазон. Пока у меня нет проблем с доступом к этим объектам.
Мои проблемы начинаются здесь:
Используя объект диапазона, я могу получить доступ к его свойствам startContainer / StartOffset и EndContainer / Endoffset. Это означает, что я получаю информацию об узле, с которого начинается мой выбор, включая внутреннюю позицию и ту же информацию о конце выбора.
Насколько я понял, JavaScript автоматически добавляет начальные или конечные теги в случае, если мой выбор нарушает существующие древовидные структуры.
Если я хочу добавить разметку сейчас, как я могу справиться с этими сломанными структурами?
Пример:
This <i>is my</i><b>sample</b> text.
Теперь я хотел бы подчеркнуть часть «мой образец»
Это означает, что нечто подобное должно быть построено из выбора «моего образца»:
This <i>is <u>my</u></i><b><u>sample</u></b> text.
Но так как я не замечаю нарушения существующей древовидной структуры, как я могу это сделать? Как я могу обеспечить правильную разметку?
Я также думал об обработке всей строки, но я не знаю о глобальных позициях букв / текста, а только об их положении в определенных узлах.
Я надеюсь, что этот вопрос ясен, и я прошу прощения за его общую форму. Но я действительно схожу с ума от этого материала ...