我正在研究一个contenteditable div来制作一个简单的RichText-Editor.我的要求之一是能够在按钮事件上的光标位置插入html块.
通过使用基于浏览器的range,selection,range.insertNode(nodeHTML)或range.pasteHTML(nodeHTML),我能够使该部分正常工作.但我无法得到两件事,理想情况下我想拥有
>要能够使用浏览器的撤销撤消插入的节点.不知何故,浏览器忽略了上述操作.
>将光标移动到插入节点的末尾.这样用户就可以开始写作了
我知道我可以使用许多可用的编辑器,这样做非常好,但如果我得到这个,我就不必这样做了.欢迎任何帮助甚至建议.
谢谢.
解决方法
2013年8月重写的答案
不幸的是,尽管事情正在改善.除了document.execCommand()触发的程序性DOM突变之外,它们不会进入浏览器的内置撤消堆栈.但是,最近有两个发展:
> IE 11有新的ms-beginUndoUnit
和ms-endUndoUnit
命令
>有一个spec正在为Web开发人员提供撤销堆栈,其中一部分已在WebKit和Firefox中实现(注意:it’s disabled by default in Firefox,显然也在WebKit中).
在情况改善之前,您可以使用document.execCommand(“InsertHTML”,false,“< b> Some html< / b>”);但IE不支持此功能.