Javascript - 选择 - 识别文本节点

时间:2013-10-14 14:49:22

标签: javascript selection

我正在使用Javascript选择方法,并且想要在刷新页面后保存用户的选择。我在页面上的每个 html元素中添加了一个唯一ID。用户选择后,我保存anchorNode id,focusNode和offsets。然后我想使用Range和Selection类恢复选择。问题是: 例如,如果有

<div id="u1">hello <i id="u2">italic</i> word!</div>

用户选择 llo italic wor ,anchorOffset将为2,focusOffset将为3,因为我们在div内部有3个文本节点。那么,如何确定文本节点?我将有u1 id(父ID),但如何知道偏移属于哪个文本节点?感谢。

2 个答案:

答案 0 :(得分:0)

您可以使用我的Serializer module库中的Rangy或其使用的方法,这在文档中有说明。它看起来有点像XPath

答案 1 :(得分:0)

如果父div中的文本Node,我们可以确定位置 selectedText - 选择calss的实例

 var selectedStartNodeText = selectedText.anchorNode.textContent;
 var startTextNodeId = 0;
 $.each(selectedText.anchorNode.parentNode.childNodes, function(i, n){
        if(n.textContent == selectedStartNodeText) {
                startTextNodeId = i;
        }
 });