即使使用JavaScript添加文本,是否有一种简单的方法可以防止光标在div contenteditable中移动?

即使使用JavaScript添加文本,是否有一种简单的方法可以防止光标在div contenteditable中移动?,javascript,html,cursor,Javascript,Html,Cursor,我有以下代码: document.getElementById(“myDiv”).addEventListener(“keydown”,函数(e){ 如果(e.keyCode==8){ this.innerHTML+=“⠀;”。重复(4); e、 预防默认值(); } //移动光标 }); 输入文本。试试这个 const el = document.getElementById("myDiv"); const sel = window.getSelection(); const o

我有以下代码:

document.getElementById(“myDiv”).addEventListener(“keydown”,函数(e){
如果(e.keyCode==8){
this.innerHTML+=“⠀;”。重复(4);
e、 预防默认值();
}
//移动光标
});
输入文本。
试试这个

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);
我还没有签入所有浏览器。您必须执行一些额外的步骤来实现浏览器兼容性,但这是要点

此处演示:


部分取自:

那么,是否要阻止选项卡在页面上的另一个元素中获得焦点?如果是这种情况,只需通过添加行
e.preventDefault()来防止默认操作
if
块中。@Teemu callmewhateyouwant you's right,我确实忘了把
e.preventDefault
放进去,但这不是重点。关键是,我需要一种方法来防止在使用JavaScript添加文本时光标移动。选项卡只是一个示例,但我希望自动保留光标位置。好的,但首先您必须改进问题。添加您已经尝试过的例子,这样我们就不会浪费时间去创建和建议您知道不起作用的东西。现在的例子。。。div元素将制表符显示为反斜杠,而t,HTML不能包含转义序列字符,如
\t
\n
,(但pre元素会接受这些字符)。