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

问题描述

如何根据 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 等 Chrome 浏览器上测试。

我在堆栈溢出时找到了跨浏览器解决方案(在知道 caretRangeFromPoint 函数的名称后)。如果您正在寻找跨浏览器解决方案,请查看此处:https://stackoverflow.com/a/11191372/1635166