Ответ 1
Граница диапазона не является смещением символов в строчном представлении HTML. Скорее, это смещение внутри DOM node. Например, если node является текстом node, граница выражается как смещение символа в тексте node. Если node является элементом, он выражается как число дочерних узлов node до границы. Например, в следующем HTML, с диапазоном, границы которого обозначены символом |
:
<div id="test">foo|bar<br>|<br></div>
... граница начала диапазона лежит в смещении 3 в тексте node, который является первым дочерним элементом элемента <div>
, а конечная граница лежит со смещением 2 внутри <div>
, так как есть два дочерние узлы (текст node "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);