Javascript 如何获取给定鼠标(或文档)位置的DOM节点内的DOMRange样式偏移量?
我知道如何确定哪些DOM节点与绝对位置相交。但假设这是一个文本节点。如何确定与该位置对应的文本节点内的偏移量?我想构造一个从已知位置到该位置的DOMRange。第一步是找到与该位置相交的所有Javascript 如何获取给定鼠标(或文档)位置的DOM节点内的DOMRange样式偏移量?,javascript,dom,Javascript,Dom,我知道如何确定哪些DOM节点与绝对位置相交。但假设这是一个文本节点。如何确定与该位置对应的文本节点内的偏移量?我想构造一个从已知位置到该位置的DOMRange。第一步是找到与该位置相交的所有元素。您应该使用该方法来执行此操作。然后,您可以轻松获得该元素中的所有文本节点。困难的部分是找出那些text节点中哪些文本在这些边界内。您可以从开始获取该元素中的文本行。这是一个例子 然后,您需要构造一个范围对象,适当地更改startOffset和endOffset。您也可以在范围对象上使用getClient
元素。您应该使用该方法来执行此操作。然后,您可以轻松获得该元素中的所有文本节点。困难的部分是找出那些text
节点中哪些文本在这些边界内。您可以从开始获取该元素中的文本行。这是一个例子
然后,您需要构造一个范围
对象,适当地更改startOffset
和endOffset
。您也可以在范围
对象上使用getClientRects
方法。非常确定这是不可能的,至少在跨浏览器兼容的情况下是不可能的,但希望听到其他方法……谢谢:getClientRects()
是关键。我已经有了一个初始实现,它在有效的DOMRanges空间上执行二进制搜索,沿着节点树递归,直到它到达一个叶子或一个TEXT/comment/CDATA节点。当我有机会清理代码时,我会发布代码,等等。我已经在上发布了我的实现。