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