Javascript 为img和输入元素添加自定义id属性
我试图为ckeditor 3.6.4中的每个img和input元素添加一个自定义id属性。 到目前为止,我已经添加了dataProcessor.htmlFilter来处理id属性,如下所示Javascript 为img和输入元素添加自定义id属性,javascript,ckeditor,Javascript,Ckeditor,我试图为ckeditor 3.6.4中的每个img和input元素添加一个自定义id属性。 到目前为止,我已经添加了dataProcessor.htmlFilter来处理id属性,如下所示 CKEDITOR.on( 'instanceReady', function(event) { var editor = CKEDITOR.instances.editor; editor.dataProcessor.htmlFilt
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;
}
}
}
}
});
});
当我在VisualEditor中添加一个新的文本字段时,我会得到一个新的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规则之后,它会以某种方式触发。您可以尝试在规则中添加对编辑器模式的检查
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;
}
}
我不确定“editor”是否是要使用的正确对象名,您可能需要使用CKEDITOR.currentInstance.mode
还有一个
getMode()
方法
以下是所提及项目的一些api参考:
按照B计划进行
自定义所需的小部件,并在插件中添加id属性。很简单,很快。试过了,但奇怪的事情发生了。我一直将“所见即所得”设置为编辑器模式。我将在我的问题中添加更多数据