使用CKEDITOR.style.addCustomHandler修改格式插件样式

时间:2014-06-23 10:53:33

标签: javascript ckeditor

CKEditor文档及其源代码中的注释意味着可以使用addCustomHandler(包括现有样式)对应用样式的方式进行一些控制。例如,在core/style.js line 665上我们有:

  

样式处理作业,包括应用,   删除,检查状态,并检查是否可以应用样式,   非常复杂。因此,没有深入了解DOM和   特别是{@link CKEDITOR.dom.range范围}和{@link   CKEDITOR.dom.walker DOM walker}它是不可能实现的   完全自定义样式处理程序,能够处理块,内联和   对象类型样式。但是,可以自定义   通过重写默认方法并重用来实现默认实现   它们。

最后一句话让我觉得我应该能够修改发生的事情,例如,当the format plugin用于应用样式更改以使用以下内容将文本转换为h1标题时

CKEDITOR.style.addCustomHandler({
    element: 'h1',
    type: 1,
    apply: function( editor ) {
    console.log( 'apply' );
    },
    remove: function( editor ) {
    console.log( 'remove' );
    }
});

但是上面的内容及其中的一些变体(使用不同的或省略的elementtype属性)没有效果。

我想这不是可能的,或者我做错了什么,但我不知道哪个。任何帮助将不胜感激。

(请注意,我可以从文档中看到如何使用type属性创建全新样式并使用addCustomHandler修改它,但格式插件使用{创建其样式{1}}属性不是element属性。)

谢谢!

1 个答案:

答案 0 :(得分:3)

  

但是,可以通过覆盖默认方法并重用它们来自定义默认实现。

你误解了这句话(为此道歉,因为我是作者:D)。使用CKEDITOR.style.addCustomHandler,您只能添加新类型。通过覆盖我的意思是访问CKEDITOR.style.prototype。例如:

var originalApply = CKEDITOR.style.prototype.apply;
CKEDITOR.style.prototype.apply = function( editor ) {
    originalApply.call( this, editor );
};