Ckeditor 在没有用户交互的情况下设置默认段落样式
我试图设置默认的样式,当用户进入空白编辑区域时,将自动应用到<代码>元素> /代码>中。我花了很多时间寻找答案,但没有找到任何有效的答案。这些要求是:Ckeditor 在没有用户交互的情况下设置默认段落样式,ckeditor,Ckeditor,我试图设置默认的样式,当用户进入空白编辑区域时,将自动应用到元素> /代码>中。我花了很多时间寻找答案,但没有找到任何有效的答案。这些要求是: 样式必须是内联的,没有样式表 没有用户交互,没有可点击的格式/样式插件 当用户单击编辑区域并开始键入时,我希望样式自动应用并可见。肯定有办法做到这一点吗 我得到的最接近的方法是使用htmlFilter,如下所示: p_rule = { elements : { p : function(element) {
- 样式必须是内联的,没有样式表
- 没有用户交互,没有可点击的格式/样式插件
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
,它确实会变得可见,但我希望它是自动的
我尝试在filter函数中使用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());
});
但这也需要用户交互。使用“change”事件创建递归
我是CKEditor的新手,很明显,我缺少了一些关于过滤器如何工作的信息,这些信息与文本区域中当前显示的内容相关
有没有CKEditor
guru?救命啊
谢谢我真的建议不要走这条路。你会发现自己在与无数的问题作斗争,比如如果你复制和粘贴,如果你将格式更改为h1然后再返回,如果你创建一个列表项然后将其转换为一个段落,等等。实际上有几十个这样的问题。你需要重写一半的编辑器 在CKEditor 4中处理此问题的方法是重新思考: 样式必须是内联的,没有样式表 在CKEditor中,您显然需要使用样式表。我想您希望输出中包含内联样式。因此,我建议: