Javascript 获取所选内容相对于contenteditable div的x、y位置
我有一个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
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标记字母,如
或“
。我在上个月问了同样的问题。