我正在使用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),但如何知道偏移属于哪个文本节点?感谢。
答案 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;
}
});