javascript - 有没有一种简单的方法可以防止光标在 div contenteditable 中移动,即使 JavaScript 用于添加文本?
问题描述
我有以下代码:
document.getElementById("myDiv").addEventListener("keydown", function (e){
if (e.keyCode == 8) {
this.innerHTML += "⠀".repeat(4);
e.preventDefault();
}
//moves cursor
});
<div id="myDiv" contenteditable="true">Enter text.</div>
如何确保光标不会自动移动?
解决方案
尝试这个。
const el = document.getElementById("myDiv");
const sel = window.getSelection();
const offset = sel.getRangeAt(0).startOffset;
el.innerHTML += 'Text needed to be added'; // perform operations here
const nRange = document.createRange();
nRange.setStart(el.childNodes[0], offset);
nRange.collapse(true);
sel.removeAllRanges();
sel.addRange(nRange);
我还没有检查所有浏览器。您必须执行一些额外的步骤才能获得浏览器兼容性,但这是它的要点。
推荐阅读
- javascript - 如何在 HTML 中收集和解析 JSON 数据
- solr - Solr 可以索引 ASPX 文件吗?
- pandas - 如何在 groupby 计数后创建一个新列?
- terraform - AWS 会话超时后 Terraform 云卡住了
- python - 如何让程序为所有奇数的整数返回 True?
- xcode - 当我使用来自 Firebase 的预构建 UI 在 Xcode 中进行身份验证时给我一个错误。选择器“labelColor”没有已知的类方法
- javascript - 计算其他数组中数组中的特定单词
- python - 如何使用 SimPy 在 Python 中运行并发“任务”,其中每个任务都在等待多个资源?
- pdf - 如何覆盖 Drupal 8 dompdf dpi?
- angular - 是否有任何选项可以延长在 mat-select 中的搜索时间