目标:使用IE11获取非输入元素(跨度/分隔)中单击的文本位置
我有一个工作台供用户使用小部件添加和修改内容。有一个主窗口小部件具有不同类型的内容列表,例如,它可能具有如下内容:
<div class='summaryView'>
<div class='summaryHead'>Summary 1</div>
<div class='summaryContent'>Foo bar baz</div>
</div>
用户将在这个窗口中单击,它将打开另一个小部件,其中的摘要内容将在一个文本区域内(实际上是一个代码镜像实例)。新的要求是,如果用户在
a
和
b
在里面
bar
(例如),当小部件打开以开始编辑内容时,光标将位于同一位置。
我要做的问题是知道他们点击的实际位置。我可以从事件中得到坐标…但这并没有真正帮助我(除非我可能使用单空格字体,这不是一个选项)。
我也发现了
document.caretPositionFromPoint
和
document.caretRangeFromPoint
这似乎有帮助…我可以做如下的事情:
if (document.caretPositionFromPoint) {
range = document.caretPositionFromPoint(e.pageX, e.pageY);
textNode = range.offsetNode;
offset = range.offset;
} else if (document.caretRangeFromPoint) {
range = document.caretRangeFromPoint(e.pageX, e.pageY);
textNode = range.startContainer;
offset = range.startOffset;
}
…然后从那里走…但这些都不适用于IE11(很遗憾,我的用户一直坚持使用)。
尽管
documentation
似乎表明它应该与IE一起工作。我假设它与“这是一项实验性技术”有关。