ckeditor 3.6.4 の各 img & input 要素にカスタム id 属性を追加しようとしています。これまでのところ、このような id 属性を処理するために dataProcessor.htmlFilter を追加しました
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」のままで、新しい ID が与えられます。
ダブルアクションを防ぐにはどうすればよいですか?
いくつかのテストを行いました。これを追加しました
CKEDITOR.instances.editor.on('mode', function() {
// Code to execute when the user switches editing modes
alert('Changed to: ' + CKEDITOR.instances.editor.mode);
});
どういうわけか、それは htmlFilter ルールの後に発生します。