所见即所得内容中的撤消和重做SWT中的可编辑内容;不起作用

Undo and Redo in WYSYWYG contentEditable in SWT doesn't work

本文关键字:编辑 不起作用 撤消 所见即所得 重做 SWT      更新时间:2023-12-20

通过将body标记的contentEditable属性设置为true,我正在使用SWT进行WYSYWYG HTML5编辑器。

当我执行一些像document.execCommand('bold')这样的命令时,它可以完美地工作。但是当我尝试用document.execCommand('undo')撤消操作时,什么也没发生。我不知道我是否必须设置撤消管理器或做类似的事情。你能帮我吗?

这似乎是谷歌搜索将揭示的一个常见问题。下面的站点有一个很好的兼容性表和用于测试的演示。

  • 表:http://www.quirksmode.org/dom/execCommand.html
  • 演示:http://www.quirksmode.org/dom/execCommand/

他们在演示页面上也有以下声明:

撤消/恢复在IE中不起作用。问题是右侧的text区域也添加到"撤消/重做"堆栈中。那里最终版本中将没有文本区域,因此没有必要解决问题。

根据这个怪癖模式表,undo/redo在所有主要的浏览器中都可以工作,但它有以下注释:

"撤消"在Safari中有效,但如果您过于频繁地执行"撤消/重做",它会崩溃。在3中解决。如果您在可编辑区域中进行自己的更改,"撤消/重做"在Mozilla和Safari中仍然有效(尽管它忽略了您的自定义更改),但在IE和Opera中它停止了工作。

我不知道SWT会如何影响这一点,但使用可能会更好

document.execCommand("undo", "", null)

ExecCommand一直都很bug,我对SWT了解不多,但我希望这能帮助你。