2011-12-23 37 views
2

我有一个div标签,里面有一堆文本。JavaScript获取最接近点击字符的页面坐标

<div>Lots of text in here</div> 

我正在侦听来自div的onclick事件。我想在用户点击div的任何地方插入假文本光标。我可以很容易地得到什么字符被点击:

var sel = window.getSelection(); 
sel.focusOffset; 

但我不知道如何获得该字符的像素坐标。

回答

3

rangy库有一个功能,完全是这样 - 找到选择的像素位置。看看这个演示:http://rangy.googlecode.com/svn/trunk/demos/position.html

图书馆主页:http://code.google.com/p/rangy/

一旦你使用瘦长得到的像素位置,你可以动态地添加绝对定位的DIV(或重新定位现有DIV),以这些坐标。

+0

那么,rangy是否在选择范围的开始/结尾添加了一个虚拟元素,并从元素中获取坐标?还是以另一种方式做它?我真的只需要使用选择/范围来完成这一件事,因此必须包含整个图书馆将是一件耻辱。 – Azmisov

+0

我不认为rangy这样做。它会给你一些线条,你用这些线条做什么取决于你。但是一旦你有了这些坐标,添加/显示一个虚拟元素(对于游标)应该是直截了当的。如果你不想包括整个库,你可能想看看它的来源,看看它如何确定coords。有一点需要考虑的是,rangy似乎在很多浏览器中都经过了很好的测试,从稳定性的角度来看,它可能比定制代码更好。 – techfoobar

+0

好的,谢谢。 – Azmisov