在一个可信的div中,可以使用浏览器的撤消撤消`range.insertNode`吗?

时间:2011-12-17 07:07:03

标签: javascript contenteditable undo rich-text-editor

我正在使用contenteditable div创建一个简单的RichText-Editor。我的要求之一是能够在按钮事件上的光标位置插入html块。

根据浏览器,我可以使用rangeselectionrange.insertNode(nodeHTML)range.pasteHTML(nodeHTML)来使该部分正常工作。但我无法得到两件事,理想情况下我想要

  1. 使用浏览器的撤消功能,可以撤消插入的节点。不知何故,浏览器会忽略上述操作。
  2. 将光标移动到插入节点的末尾。这样用户就可以在
  3. 之后开始写作了

    我知道我可以使用许多可用的编辑器,这样做非常好,但如果我得到这个,我就不用了。欢迎任何帮助甚至建议。

    感谢。

1 个答案:

答案 0 :(得分:10)

2013年8月重写的答案

不幸的是,尽管事情正在改善。除document.execCommand()触发的程序性DOM突变不会进入浏览器的内置撤消堆栈。然而,最近有两个发展:

在情况改善之前,您可以使用document.execCommand("InsertHTML", false, "<b>Some html</b>");,但IE不支持此功能。