我正在使用contentEditable DIV中的小型RTE。我已经向DIV附加了一个按键事件处理程序,它监视何时触发了ENTER键以及选择的位置。如果它在文本节点内,我将插入一个新行。但是,这个代码有缺陷并经常插入4个换行而不是一个换行(我必须按4次撤消才能回到光标所在的位置 - 这就是我认为execCommand多次触发的原因)。另一方面,它有时需要两次按ENTER键才能插入新行。
这是一个keypress事件处理程序的代码片段,一旦确定按下了ENTER键:
if(selection.focusNode.nodeType!=3){ return; }
ev.preventDefault();
var HTML='
';
toolbar.target.ownerDocument.execCommand('insertHTML',false,HTML);
我想使用execCommand来保留浏览器的撤消行为。我不想插入<br>
,因为此插入只发生在文本节点中,为了进行后期处理,我需要在文本节点中使用\ n而不是<br>
或任何其他块 - 类型标签。我使用的是unicode换行符

。我已经尝试了回车符
以及类似的结果。我无法将\n
与insertHTML
一起使用,因为这不是正确的HTML。
任何人都有关于如何确保execCommand仅运行一次的想法?