当我只知道字符偏移量时,如何创建范围对象?

2023-11-23

所以我有一个包含文本块的 div,之前用户已在该块中选择了一些文本,并且我从该选择中创建了一个范围对象。我存储了所选文本的起点和终点的偏移量,但在重新创建范围时遇到问题(以便我可以操纵它)。 “quotables”是保存所有文本的 div。我不知道我做错了什么。



    var theRange = rangy.createRange();
    var node = $('.quotables').html();
    theRange.setStart(node, 14);
    theRange.setEnd(node, 318);


但我不断收到错误: 未捕获的错误:NOT_FOUND_ERR:DOM 异常 8
m.setStart
(匿名函数)
d.extend._Deferred.f.resolveWith
d.d.扩展就绪
d.c.addEventListener.y


范围边界不是 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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当我只知道字符偏移量时,如何创建范围对象? 的相关文章

随机推荐