有没有办法禁用元素属性的排序,以便在 allowedContent 设置为 true 时 checkDirty() 可以正常工作?
这里的属性排序示例
<div zattribute='z' attribute='a'>simple</div
更改为
<div attribute="a" zattribute="z">simple</div>
导致 checkDirty() 调用始终返回 true,即使用户实际上并未更改 ckeditor 用户界面中的任何内容。
有没有办法禁用元素属性的排序,以便在 allowedContent 设置为 true 时 checkDirty() 可以正常工作?
这里的属性排序示例
<div zattribute='z' attribute='a'>simple</div
更改为
<div attribute="a" zattribute="z">simple</div>
导致 checkDirty() 调用始终返回 true,即使用户实际上并未更改 ckeditor 用户界面中的任何内容。
CKEDITOR.on( 'instanceReady', function( ev ) {
ev.editor.dataProcessor.writer.sortAttributes = 0;
});
将禁用页面上所有编辑器实例的属性排序。这在 CKEditor 文档中的任何地方都没有涉及,而是通过查看编辑器实例对象找到的。
你的代码做了一些奇怪的事情,比如调用editor.resetDirty()
(editor#contentDom
为什么?)。此外,CKEditor 不会对属性进行排序,因为唯一要做的getSnapshot()
就是获取可编辑的innerHTML
. 因此,如果有任何对属性进行排序的浏览器,并且如果他们这样做(我记得有些人随机这样做),那么你无能为力。
你需要从头开始。首先定义您想要实现的目标,并尽可能使用最少的代码来实现。我还建议您不要使用editor.checkDirty()
,因为它是一种旧方法,在特定情况下不起作用(是的,文档中缺少此方法)。用于editor#change
获取有关更改的实时通知,或editor.getData()
不时进行比较。