Javascript 获取所选内容相对于contenteditable div的x、y位置

Javascript 获取所选内容相对于contenteditable div的x、y位置,javascript,jquery,jquery-plugins,contenteditable,Javascript,Jquery,Jquery Plugins,Contenteditable,我有一个contenteditable div,需要获取当前选择的x和y位置(即插入符号的像素)。我现在拥有的是一个方法,它获取相对于窗口的选择,即window.getSelection()。我发现的是返回相对于div节点的偏移位置的方法 你对这个或者插件有什么想法吗?我发现了一些插件,它们返回相对于文本区域的光标位置,但不幸的是,这些插件不适用于内容可编辑的div 以下是我现在掌握的代码: function getSelectionCoords() { var sel = docume

我有一个contenteditable div,需要获取当前选择的x和y位置(即插入符号的像素)。我现在拥有的是一个方法,它获取相对于窗口的选择,即
window.getSelection()
。我发现的是返回相对于div节点的偏移位置的方法

你对这个或者插件有什么想法吗?我发现了一些插件,它们返回相对于文本区域的光标位置,但不幸的是,这些插件不适用于内容可编辑的div

以下是我现在掌握的代码:

function getSelectionCoords() {
    var sel = document.selection, range;
    var x = 0, y = 0;
    if (sel) {
        if (sel.type != "Control") {
            range = sel.createRange();

            range.collapse(true);
            x = range.boundingLeft;
            y = range.boundingTop;
        }
    } else if (window.getSelection) {
        sel = window.getSelection();
        if (sel.rangeCount) {
        range = sel.getRangeAt(0).cloneRange();

        if (range.getClientRects()) {
            range.collapse(true);
            var rect = range.getClientRects()[0];

            x = rect.left;
            y = rect.top;
        }
      }
    }
    return { x: x, y: y };
 }

感谢您的帮助。

该代码有什么问题吗?它获取相对于视口的x和y位置,而我希望选择的x和y位置相对于我的div,以便我可以在画布上以完全相同的位置在div上绘制一个矩形。这只是调用
getBoundingClientRect()的问题
并从
x
y
中减去其
左侧
顶部
@TimDown在调整窗口大小时是否会调整div的大小?甚至我也有同样的疑问:(.现在我使用一个空span元素来计算contenteditable div中插入符号的偏移位置。当我尝试添加一些HTML标记字母,如
。我在上个月问了同样的问题。