У меня есть html-страница с текстовым контентом. При выборе любого текста и нажатии кнопки выделения, я могу изменить стиль выделенного текста, чтобы выделить то же самое. Чтобы реализовать эту функцию, я написал следующий метод.
sel = window.getSelection();
var range = sel.getRangeAt(0);
var span = document.createElement('span');
span.className = "highlight" + color;
range.surroundContents(span);
Это отлично работает, если вы выберете текст без тега html, но когда текст имеет какой-либо тег html между ними, он дает ошибку
Не удалось выполнить "surroundContents" в "Range": диапазон частично выбрал нетекстовый node.
Как решить эту проблему. Можно ли выделить одно и то же отдельно для каждой части (разделенной тэгами html)?