我正在使用SWT创建一个所见即所得的HTML5编辑器,方法是将主体标记的contentEditable
属性设置为true
。
当我执行像document.execCommand('bold')
这样的命令时,它工作得很好。但是,当我尝试用document.execCommand('undo')
撤消一个操作时,什么也没有发生。我不知道我是否必须设置撤消管理器或做类似的事情。你能帮帮我吗?
发布于 2012-12-14 04:50:29
作为Google search will reveal,这似乎是一个常见的问题。下面的站点有一个很好的兼容性表和demo供测试。
http://www.quirksmode.org/dom/execCommand.html
他们在演示页面上还提供了以下声明:
撤消/重做在IE中不起作用。问题是,右侧文本区域中的更改也会添加到撤消/重做堆栈中。最终版本中不会有文本区,所以没有必要解决这个问题。
发布于 2012-12-28 04:26:36
根据this quirksmode table的说法,undo/redo在所有主流浏览器中都有效,但它有这样的说明:
Undo可以在Safari中工作,但如果您太频繁地执行Undo/Redo,它就会崩溃。3.如果您在可编辑区域中进行了自己的更改,则在Mozilla和Safari中Undo/Redo会继续工作(尽管它会忽略您的自定义更改),但在IE和Opera中它会停止工作。
我不知道SWT会如何影响这一点,但它可能更好地使用
document.execCommand("undo", "", null)
ExecCommand的but一直很多,我对它知之甚少,但我希望这能对你有所帮助。
https://stackoverflow.com/questions/11579255
复制相似问题