execCommand insertHTML多次插入

时间:2011-04-09 19:55:09

标签: contenteditable execcommand

我正在使用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换行符&#x000A;。我已经尝试了回车符&#x000D;以及类似的结果。我无法将\ninsertHTML一起使用,因为这不是正确的HTML。

任何人都有关于如何确保execCommand仅运行一次的想法?

0 个答案:

没有答案