我需要在contenteditable div中实现突出显示的数字(将来我会添加更复杂的规则)。 问题是,当我插入新的内容与JavaScriptreplace,DOM的变化和contenteditable div失去了重点。 我需要的是在目前的位置上注意div与脱字符号,所以用户可以input没有任何问题,我的function简单地突出显示数字。 谷歌search我决定Rangy图书馆是最好的解决scheme。 我有以下代码: function formatText() { var savedSel = rangy.saveSelection(); el = document.getElementById('pad'); el.innerHTML = el.innerHTML.replace(/(<([^>]+)>)/ig,""); el.innerHTML = el.innerHTML.replace(/([0-9])/ig,"<font color='red'>$1</font>"); rangy.restoreSelection(savedSel); } <div contenteditable="true" id="pad" onkeyup="formatText();"></div> 问题是function结束后工作重点回到div,但是caret总是指向div开始,我可以在任何地方input,exe开始。 此外console.logtypes以下Rangy warning: Module SaveRestore: Marker element has been removed. Cannot restore selection. Rangy warning: Module SaveRestore: Marker element has been removed. Cannot restore selection. […]