我正在尝试为每个img&添加自定义ID属性ckeditor 3.6.4中的输入元素。 到目前为止,我添加了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。但是如果我设置为源模式,模式仍然是'wysiwyg'而不是'source',它会给出一个新的Id。
如何防止双重操作?
做了一些测试。添加了这个
CKEDITOR.instances.editor.on('mode', function() {
// Code to execute when the user switches editing modes
alert('Changed to: ' + CKEDITOR.instances.editor.mode);
});
以某种方式在htmlFilter规则之后触发。
答案 0 :(得分:2)
您可以尝试将编辑器模式的检查添加到规则中。
if ( (element.name == 'img' || element.name == 'input') && editor.mode == "wysiwyg" ) {
if (!element.attributes.id){
var g = createID();
alert('new id: ' + g);
element.attributes.id = g;
}
}
我不确定“编辑器”是否是要使用的正确对象名称,您可能希望使用CKEDITOR.currentInstance.mode
还有getMode()
方法。
以下是所提及项目的api参考:
mode
property
currentInstance
property
getMode()
method
答案 1 :(得分:1)
参加计划B
自定义所需的小部件并在插件中添加id属性。简单快捷。