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

sim*_*rsh 6 javascript undo contenteditable rich-text-editor

我正在研究一个contenteditablediv来制作一个简单的RichText-Editor.我的要求之一是能够在按钮事件上的光标位置插入html块.

我可以用得到的那部分工作正常range,selection,range.insertNode(nodeHTML)range.pasteHTML(nodeHTML)基于浏览器.但我无法得到两件事,理想情况下我想拥有

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

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

谢谢.

Tim*_*own 10

2013年8月重写的答案

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

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