Javascript CKEditor还原元素/撤消所有更改

Javascript CKEditor还原元素/撤消所有更改,javascript,ckeditor,Javascript,Ckeditor,是否有方法恢复原始内容/撤消已成为内联CKEditor的元素的所有更改?似乎不存在用于此的内置函数,请参见示例 一些人提出了一些解决方法,比如带有onclickjavascript事件的按钮,它可以重新加载页面。或者将初始数据保存在编辑器中,然后再次使用javascript将内容替换为事件中的内容。()我的解决方案: 实例化CKEditor后,我使用CKEditor.editor1.getData()将初始内容保存到自定义变量CKEditor.editor1.firstSnapshot。稍后,当

是否有方法恢复原始内容/撤消已成为内联CKEditor的元素的所有更改?

似乎不存在用于此的内置函数,请参见示例

一些人提出了一些解决方法,比如带有
onclick
javascript事件的按钮,它可以重新加载页面。或者将初始数据保存在编辑器中,然后再次使用javascript将内容替换为事件中的内容。()

我的解决方案:

实例化CKEditor后,我使用
CKEditor.editor1.getData()
将初始内容保存到自定义变量
CKEditor.editor1.firstSnapshot
。稍后,当我想要恢复它时,我用
CKEDITOR.editor1.setData(CKEDITOR.editor1.firstSnapshot)将其写回


起初我想使用
getSnapshot()
,但它总是返回
true
,所以这对我不起作用。

我想分享一种解决问题的不同方法。我使用的是内联CKEditor,并且有一个on blur事件(当用户取消聚焦CKEditor时),它会提示保存内容或回滚更改的选项

对于rollback,我只是在while循环中放入checkDirty()-函数,该函数检查实例是否有更改,所以在每个true中执行undo,直到ckeditor恢复到初始状态

代码如下所示:

CKEDITOR.instances["editor"].on('blur', function (evt) {
    if (confirm("Do you wish to roll back changes ?")) {
        while (CKEDITOR.instances["editor"].checkDirty())   {
            CKEDITOR.instances["editor"].execCommand('undo');
        }
    } else {
        // do nothing!
    }                        
})
在我的Ckeditor 4.2上使用
getSnapshot()
loadSnapshot()
可以很好地工作,否则我会用同样的方法(保存快照并在必要时将其带回)。