我正在尝试为 ckeditor 3.6.4 中的每个 img & input 元素添加自定义 id 属性。到目前为止,我已经添加了 dataProcessor.htmlFilter 来处理这样的 id 属性
CKEDITOR.on( 'instanceReady', function(event) {
var editor = CKEDITOR.instances.editor;
editor.dataProcessor.htmlFilter.addRules(
{
elements: {
$: function (element) {
if ( (element.name == 'img' || element.name == 'input') && CKEDITOR.instances.editor.mode == 'wysiwyg' ) {
if (!element.attributes.id){
var g = createID();
alert('new id: ' + g);
element.attributes.id = g;
}
}
}
}
});
});
当我在可视化编辑器中添加一个新的文本字段时,我确实得到了一个新的 id。但是如果我设置为源模式,模式仍然是“所见即所得”而不是“源”,它会给出一个新的 ID。
如何防止双重行动?
做了一些测试。添加了这个
CKEDITOR.instances.editor.on('mode', function() {
// Code to execute when the user switches editing modes
alert('Changed to: ' + CKEDITOR.instances.editor.mode);
});
在 htmlFilter 规则之后以某种方式触发。