Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获取给定鼠标(或文档)位置的DOM节点内的DOMRange样式偏移量?_Javascript_Dom - Fatal编程技术网

Javascript 如何获取给定鼠标(或文档)位置的DOM节点内的DOMRange样式偏移量?

Javascript 如何获取给定鼠标(或文档)位置的DOM节点内的DOMRange样式偏移量?,javascript,dom,Javascript,Dom,我知道如何确定哪些DOM节点与绝对位置相交。但假设这是一个文本节点。如何确定与该位置对应的文本节点内的偏移量?我想构造一个从已知位置到该位置的DOMRange。第一步是找到与该位置相交的所有元素。您应该使用该方法来执行此操作。然后,您可以轻松获得该元素中的所有文本节点。困难的部分是找出那些text节点中哪些文本在这些边界内。您可以从开始获取该元素中的文本行。这是一个例子 然后,您需要构造一个范围对象,适当地更改startOffset和endOffset。您也可以在范围对象上使用getClient

我知道如何确定哪些DOM节点与绝对位置相交。但假设这是一个文本节点。如何确定与该位置对应的文本节点内的偏移量?我想构造一个从已知位置到该位置的DOMRange。

第一步是找到与该位置相交的所有
元素。您应该使用该方法来执行此操作。然后,您可以轻松获得该
元素中的所有
文本
节点。困难的部分是找出那些
text
节点中哪些文本在这些边界内。您可以从开始获取该
元素中的文本行。这是一个例子


然后,您需要构造一个
范围
对象,适当地更改
startOffset
endOffset
。您也可以在
范围
对象上使用
getClientRects
方法。

非常确定这是不可能的,至少在跨浏览器兼容的情况下是不可能的,但希望听到其他方法……谢谢:
getClientRects()
是关键。我已经有了一个初始实现,它在有效的DOMRanges空间上执行二进制搜索,沿着节点树递归,直到它到达一个叶子或一个TEXT/comment/CDATA节点。当我有机会清理代码时,我会发布代码,等等。我已经在上发布了我的实现。