我有一个contenteditable div,其中我有多个标签(br,b,u,i)和文本,我需要获得相对于div的插入位置,包括所有标签 .
例如:
<div id="h" contenteditable="true">abc<b>def<br>ghi</b>jkl</div>
如果光标在g和h之间,我需要插入位置为14.问题是找到的使用treeWalker的方法在这种情况下不起作用 . 找不到粗体标签......可能是因为它没有关闭 . 我也尝试了几种方法,但仍然没有运气 .
我需要它在Firefox中工作 . 谢谢 .
2 回答
你试过这个吗? Get a range's start and end offset's relative to its parent container
直接链接到jsfiddle:https://jsfiddle.net/TjXEG/1/
功能码:
只是必须这样做,所以有一些工作的解决方案(可能需要一些测试)
基本思路是:
使用此方法获取textContent位置:Get caret (cursor) position in contentEditable area containing HTML content
遍历元素的innerHTML到textContent位置
如果遇到html标记或实体,则迭代它直到普通char,然后继续
示例代码: