问题描述
如何根据 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