Javascript-选择-标识文本节点

Javascript-选择-标识文本节点,javascript,selection,Javascript,Selection,我正在使用Javascript选择方法,希望在刷新页面后保存用户的选择。我为页面上的每个html元素添加了一个唯一的id。在用户选择后,我保存锚点节点id、焦点节点和偏移量。然后,我想使用Range和selection类恢复选择。问题是: 例如,如果有 <div id="u1">hello <i id="u2">italic</i> word!</div> 你好,斜体字! 而用户选择的llo italic wor,AnchoroOffset将为

我正在使用Javascript选择方法,希望在刷新页面后保存用户的选择。我为页面上的每个html元素添加了一个唯一的id。在用户选择后,我保存锚点节点id、焦点节点和偏移量。然后,我想使用Range和selection类恢复选择。问题是: 例如,如果有

<div id="u1">hello <i id="u2">italic</i> word!</div>
你好,斜体字!

而用户选择的llo italic wor,AnchoroOffset将为2,focusOffset将为3,因为div中有3个文本节点。那么,如何确定文本节点呢?我将有u1 id(父id),但如何知道偏移量属于哪个文本节点?谢谢。

您可以使用my library中的,或者它使用的方法,文档中对此进行了解释。它看起来有点像。

我们可以确定父div中文本节点的位置 selectedText-选择计算器的实例

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

不,我不能。。。因为当用户缺席时,文本可能会更改。。。在这种情况下,所有序列化程序数据都将被破坏(因为DOM将是另一个小对象)@Volodymyr:OK。那么,在保存和恢复选择之间可以和不能更改什么呢?我可以保存父标记的id和偏移量。例如,如果结构是一些小文本,我可以保存baseId u1、baseOffset-用户选择的开始、focusId-u1、focusOffset-用户选择的结束。然后使用这4个值,我可以创建一个选择对象,并使用Rangy Highlighter插件高亮显示选择。但是如果标签的结构如我的问题中所示,它就不起作用了,因为它有3个textNode,我不知道如何确定使用哪个textNode…我不会阅读你的随机库文档,而不是你在这里解释它。很简单ask@neaumusic:文档链接已过期,因此我现在已修复。在图书馆的文档中有详细说明图书馆工作原理的地方。从中复制和粘贴对我来说似乎是多余的。