С ранжирующей библиотекой javascript, мы можем окружить текст следующим образом, даже если начальная и конечная позиции не имеют общего предка:
var range = rangy.createRangyRange();
range.setStart(firstNode, offsetFirstNode);
range.setEnd(lastNode, offsetSecondNode);
var rangyOptions = { useExistingElements: false };
var applier = rangy.createClassApplier('span', rangyOptions);
applier.applyToRange(range);
Как это сделать вJava org.w3c.dom (не Javascript)?Я пытаюсь сделать это следующим образом, но не получается, если начальная и конечная позиции не имеют общего предка.В этом коде мы создаем только один элемент span, но нам нужно создать более одного (и Rangy делает это):
import org.w3c.dom.ranges.*
Range range = doc.asInstanceOf[DocumentRange].createRange()
range.setStart(firstNode, offsetFirstNode);
range.setEnd(lastNode, offsetSecondNode);
Element span = doc.createElement("span")
range.surroundContents(span)
// Fails with Exception in thread "main" org.apache.xerces.dom.RangeExceptionImpl: BAD_BOUNDARYPOINTS_ERR: The boundary-points of a Range do not meet specific requirements.