根据 x 和 y 坐标将插入符设置到最近的可能位置

Set caret to nearest possible position based on an x and y coordinate

如何根据 x 和 y 坐标将插入符号位置(文本光标)设置为最近的可能位置?整个 html 文档已设置 document.designMode = "on"

我找到了一些东西来获取当前的 X 和 Y 坐标,但是我怎样才能反转场景?

let sel = window.getSelection();
let range = sel.getRangeAt(0);

console.log(range.getClientRects());

我正在寻找必须在 Microsoft WebView2/Edge 中运行的 vanilla javascript。将文件拖动到此 html 文档时,插入符号的位置完全按照我正在寻找的方式更改(但我无法使用此拖动操作)。

我找到了解决方案:

function moveCaret(x, y) {
  let sel = window.getSelection();
  sel.removeAllRanges();
  sel.addRange(document.caretRangeFromPoint(x, y));
}

该函数将插入符号移动到最近的可能位置。在 Opera、Edge 或 Chrome.

等铬浏览器上测试

我在 stack overflow 上找到了一个跨浏览器的解决方案(在知道 caretRangeFromPoint 函数的名称之后)。如果您正在寻找跨浏览器解决方案,请查看此处: