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' );
}
});
但是上面的内容及其中的一些变体(使用不同的或省略的element
和type
属性)没有效果。
我想这不是可能的,或者我做错了什么,但我不知道哪个。任何帮助将不胜感激。
(请注意,我可以从文档中看到如何使用type
属性创建全新样式并使用addCustomHandler
修改它,但格式插件使用{创建其样式{1}}属性不是element
属性。)
谢谢!
答案 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 );
};