在没有用户交互的情况下设置默认段落样式

时间:2016-04-06 15:15:21

标签: ckeditor

我正在尝试设置应用于用户进入空白编辑区时自动创建的P elements的默认样式。我花了很多时间寻找答案,但没有找到任何有效的方法。要求是:

  • 样式必须是内联的,没有样式表
  • 无用户互动,无需点击格式/样式插件

当用户点击编辑区域并开始输入时,我希望自动应用和显示样式。当然有办法实现这个目标吗?

我最接近的是使用htmlFilter,如下所示:

p_rule = {
    elements : {
        p : function(element) {
            if (element.attributes.style === undefined) {
                element.attributes.style = "color: #0000ff;";
            }
        }
    }
};
ev.editor.dataProcessor.htmlFilter.addRules(p_rule);

但新款式不会自动显示。

如果用户进入源编辑模式并返回WYSIWYG,它确实可见,但我希望它是自动的。

我尝试在过滤器函数中使用updateElement(),但它不起作用并创建无限递归:

p_rule = {
    elements : {
        p : function(element) {
            if (element.attributes.style === undefined) {
                element.attributes.style = "color: #0000ff;";
                CKEDITOR.instances['editor1'].updateElement();
            }
        }
    }
};
ev.editor.dataProcessor.htmlFilter.addRules(p_rule);

(我猜updateElement()会触发过滤器)

如果我在事件中使用setData(getData()),我可以奇怪地让textarea更新过滤器应用的更改,例如:

CKEDITOR.instances['editor1'].on('blur', function() {
    CKEDITOR.instances['editor1'].setData(CKEDITOR.instances['editor1'].getData());
});

但这也需要用户互动。使用"更改" event创建递归。

我是CKEditor的新手,显然我错过了过滤器如何与当前在textarea中显示的内容相关的内容。

那里有任何CKEditor大师吗?救命啊!

由于

0 个答案:

没有答案