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

。我也尝试了回车符
,结果相似。我不能使用\n
withinsertHTML
因为那不是正确的 HTML。
任何人都知道如何确保 execCommand 只运行一次?