如何确定单击的textnode中的字符?

Mic*_*ael 2 html javascript dom

我可以设置一个事件监听器来告诉我何时在HTML文档中的某个位置发生鼠标单击.但是如果在某些文本上发生了点击,我需要知道文本中的哪个字符发生了点击.有没有办法做到这一点?

我可以想到一些非常令人讨厌的解决方案.例如,对于文档中的每个单个字符,我可以将其包装在具有自己的事件的单独元素中.或者,因为我可以告诉单击发生在哪个文本节点,我可以使用clientWidth执行某种计算(基本上几乎就像模拟文本的渲染),以确定点击发生在哪个字符.

当然必须有一些更容易的东西?

Mic*_*ael 8

捕获鼠标事件后,将元素中的文本拆分为两个单独的跨度.查看每个跨度的偏移量以确定事件发生的位置.现在将该跨度拆分为两个并再次进行比较.重复,直到您的跨度具有单个字符,其坐标包含鼠标单击的坐标.由于这实际上是二元搜索,因此整个过程相当快,并且与替代方案相比,跨度总数较低.找到角色后,可以解散跨距并将所有文本返回到原始元素.