使用getData或beforeGetData事件修改CKEditor中的数据会导致旧数据

使用getData或beforeGetData事件修改CKEditor中的数据会导致旧数据,ckeditor,Ckeditor,我将CKEditor 4.4.1与YUI一起使用 YUI的问题是,如果您悬停、单击或与页面上的任何元素交互,它将生成一个ID属性并将其添加到该元素中 它也对CKEditor的元素执行相同的操作 我需要做的是使用getData事件删除id属性 我正在尝试删除id属性,如下所示: editor.on('getData', function(e){ e.editor.undoManager.lock(); var ids = e.editor.element.find('[id]'

我将CKEditor 4.4.1与YUI一起使用

YUI的问题是,如果您悬停、单击或与页面上的任何元素交互,它将生成一个ID属性并将其添加到该元素中

它也对CKEditor的元素执行相同的操作

我需要做的是使用
getData
事件删除id属性

我正在尝试删除id属性,如下所示:

editor.on('getData', function(e){

    e.editor.undoManager.lock();

    var ids = e.editor.element.find('[id]');

    for(i = 0; i < ids.count(); i++){
        ids.getItem(i).removeAttribute('id');
    }

    e.data.dataValue = e.editor.getData(true);
    e.editor.undoManager.unlock();
});
我还尝试使用beforeGetData事件,但出现了相同的问题:

editor.on('beforeGetData', function(e){

    e.editor.undoManager.lock();

    var ids = e.editor.element.find('[id]');

    for(i = 0; i < ids.count(); i++){
        ids.getItem(i).removeAttribute('id');
    }

    e.editor.undoManager.unlock();
});
editor.on('beforeGetData',函数(e){
e、 editor.undoManager.lock();
var id=e.editor.element.find(“[id]”);
对于(i=0;i
经过更多的实验,我注意到以下几点:

  • getSnapshot()
    返回最新数据,但也会导致一些问题,因为未删除
    data-cke-saved href
    等属性

  • 看起来,一旦发生更改,就会立即创建由
    getData()
    返回的数据。因此,使用
    beforeGetData
    getData
    事件对内容进行修改似乎不起作用


是否需要确保
getData()
获取最新版本的数据?是否仍有必要强制
getData()
更新其数据?

尝试为允许内容和不允许内容的选项提供机会。请参见

中的“如何允许除…以外的所有内容”,请添加更多解释,而不是只发布链接答案。链接中断,我们希望堆栈溢出仍然是一个好的信息源,而不管这里发布的链接是否停止工作。
editor.on('beforeGetData', function(e){

    e.editor.undoManager.lock();

    var ids = e.editor.element.find('[id]');

    for(i = 0; i < ids.count(); i++){
        ids.getItem(i).removeAttribute('id');
    }

    e.editor.undoManager.unlock();
});