Javascript JS:如何获取选择计数HTML标记的位置

Javascript JS:如何获取选择计数HTML标记的位置,javascript,jquery,selection,frontend,Javascript,Jquery,Selection,Frontend,我试图通过开始/结束数组获取当前选择(突出显示)的位置 正如您在代码段中看到的,我成功地获得了我的选择位置,但它不计算HTML标记 (函数($){ $('#myButton')。单击(函数(){ var el=document.getElementById('maDiv'); var sel=getSelectionCharOffsetsWithin(el); var string=“开始于:“+sel.Start+”|结束于:“+sel.End+”\n”; $('#log')。追加(字符串)

我试图通过开始/结束数组获取当前选择(突出显示)的位置

正如您在代码段中看到的,我成功地获得了我的选择位置,但它不计算HTML标记

(函数($){
$('#myButton')。单击(函数(){
var el=document.getElementById('maDiv');
var sel=getSelectionCharOffsetsWithin(el);
var string=“开始于:“+sel.Start+”|结束于:“+sel.End+”\n”;
$('#log')。追加(字符串);
});
})(jQuery);
函数getSelectionCharOffsetsWithin(元素){
var start=0,
结束=0;
变量选择、范围、优先级范围;
if(typeof window.getSelection!=“未定义”){
range=window.getSelection().getRangeAt(0);
priorRange=range.cloneRange();
优先级范围。选择节点内容(元素);
priorRange.setEnd(range.startContainer,range.startOffset);
start=priorRange.toString().length;
end=start+range.toString().length;
}else if(文件类型选择!=“未定义”&&
(sel=文件。选择)。类型!=“控制”){
range=sel.createRange();
priorRange=document.body.createTextRange();
priorRange.moveToElementText(元素);
priorRange.setEndPoint(“EndToStart”,范围);
开始=priorRange.text.length;
结束=开始+范围.text.length;
}
返回{
开始:开始,
完:完
};
}
#maDiv{
边框:1px虚线#333;
填充:15px;
}
#解释{
边缘顶部:20px;
}

请突出显示一些文本并单击按钮


lorem ipsum dolor sit amet。 选择后单击 如果我在突出显示“lorem”这个词,我在等待:开始=0 |结束=5。
如果我突出显示“ipsum”这个词,我在等待:开始=8 |结束=18
如果我突出显示“坐”字,我在等待:开始=24 |结束=28 日志:
我一直在寻找修复方法:但是没有结果(可能是这个库的错误使用),我正在尝试在包含所有HTML标记的其他字符串上重置当前选择