我可以设置一个事件侦听器来告诉我 HTML 文档中某个位置何时发生鼠标单击。但是,如果单击发生在某些文本上,我需要知道单击发生在文本中的哪个字符上。有没有办法做到这一点?
我能想到一些非常令人讨厌的解决方案。例如,对于文档中的每个字符,我可以将其包装在具有自己的事件的单独元素中。或者,由于我可以知道单击发生在哪个文本节点,因此我可以使用 clientWidth 执行某种计算(基本上类似于模拟文本的渲染),以确定单击发生在哪个字符中。
当然一定有更容易的事情吗?
捕获鼠标事件后,将元素中的文本拆分为两个单独的范围。查看每个跨度的偏移量以确定事件发生在哪个位置。现在将该跨度分成两部分并再次比较。重复此操作,直到获得一个包含单个字符的跨度,该字符的坐标包含鼠标单击的坐标。由于这本质上是二分搜索,因此整个过程将相当快,并且与替代方案相比,跨度总数较低。一旦找到字符,跨度就可以被溶解,所有文本都返回到原始元素。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)