Граница диапазона не является смещением символа в строковом представлении HTML.Скорее, это смещение в узле DOM.Если узел является текстовым узлом, например, граница выражается как символьное смещение в тексте узла.Если узел является элементом, он выражается как количество дочерних узлов узла до границы.Например, в следующем HTML-коде с диапазоном, границы которого обозначены |
:
<div id="test">foo|bar<br>|<br></div>
... начальная граница диапазона находится со смещением 3 в текстовом узле, который является первым дочерним элементомэлемент <div>
, в то время как конечная граница лежит со смещением 2 в пределах <div>
, поскольку перед границей находятся два дочерних узла (текстовый узел "foobar" и один элемент <br>
).Вы можете создать диапазон программно следующим образом:
var range = rangy.createRange(); // document.createRange() if not using Rangy
var div = document.getElementById("test");
range.setStart(div.firstChild, 3);
range.setEnd(div, 2);