我正在做一件简单的事情,但面临各种挑战。我想做的是存储所有必需的范围对象参数,以重建用户选择。目前我存储了start和endContainer的id并且开始和endOffset
。但这些参数似乎还不够,因为用户选择跨越到start / endContainer中的任何childNodes,其偏移量是相对于该childNode计算的,而不是start / endContainer id。那么,任何人都可以帮我弄清楚我需要什么全部或额外的参数来无条件地识别我的选择,即容器等nextSibling
,previousSibling
??
我目前用于重新生成范围对象的代码是: -
function buildRange(startOffset, endOffset, startContainerId, endContainerId){
var startContainer = document.getElementById(startContainerId);
var endContainer = document.getElementById(endContainerId);
// create the range
var range = document.createRange();
range.setStart(startContainer.firstChild, startOffset);
range.setEnd(endContainer.firstChild, endOffset);
return range;
}