在CKEditor 3.x中是否可以关闭
内所有书写内容的自动封闭?我试过了
CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR;
但这只是将行内换行符更改为
,同时保留封闭段落。
当前写“测试”产生这个输出
<p>
Test</p>
但我希望它是简单的
Test
是否有配置属性或另一个内联编辑器更适合这个?
CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR;
- 这非常适合我。
您是否尝试过清除浏览器缓存 - 有时这是一个问题。<script type="text/javascript" src="/js/ckeditor/ckeditor.js"></script>
<script type="text/javascript" src="/js/ckeditor/adapters/jquery.js"></script>
<script type="text/javascript">
$(function() {
$('#your_textarea').ckeditor({
toolbar: 'Full',
enterMode : CKEDITOR.ENTER_BR,
shiftEnterMode: CKEDITOR.ENTER_P
});
});
</script>
根据@Tomkay 的评论更新:
从 CKEditor 3.6 版本开始,您可以配置是否希望内联内容自动用
<p></p>
等标签包装。这是正确的设置:
CKEDITOR.config.autoParagraph = false;
资料来源: http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.autoParagraph
在互联网上,人们注意到将 config.enterMode 设置为 CKEDITOR.ENTER_BR 会从 CKEditor 中删除环绕段落标签。值得注意的是,该设置更改了回车键的行为以插入换行符而不是段落,这是不可取的。
参见:http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.enterMode“建议使用 CKEDITOR.ENTER_P 设置,因为它具有语义价值和正确性。”
但是,旨在删除初始段落的设置 config.autoParagraph 也是不可取的,因为它引入了“不可预测的可用性问题”,因为编辑器真的想要一个顶级块元素。
参见:http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.autoParagraph
魔术发生在 wysiwygarea/plugin.js,第 410 行,编辑器根据 config.enterMode 选择默认块元素。更改默认块元素的配置选项将允许我们从一个 div 开始,但是每次按下回车键我们都会继续获得更多的 div,除非我们通过菜单更改段落格式。
参见:http://docs.cksource.com/ckeditor_api/symbols/src/plugins_wysiwygarea_plugin.js.html
可以通过后处理(在服务器上或在 CKEditor 的 getData 事件中)删除包装段落标记,但这会导致我们遇到与禁用 autoParagraph 相同的问题:没有顶级块。
我宁愿说没有好的解决方案,而是一些半解决方案,而不是接受更改 config.enterMode 作为规范解决方案。
在 config.js 中试试这个
CKEDITOR.editorConfig = function( config )
{
config.enterMode = CKEDITOR.ENTER_BR;
config.shiftEnterMode = CKEDITOR.ENTER_BR;
};
找到了!
ckeditor.js 第 91 行 ... 搜索
B.config.enterMode==3?'div':'p'
改为
B.config.enterMode==3?'div':''
(没有P!)
转储缓存和 BAM!
将此设为您的 config.js 文件代码
CKEDITOR.editorConfig = function( config ) {
// config.enterMode = 2; //disabled <p> completely
config.enterMode = CKEDITOR.ENTER_BR; // pressing the ENTER KEY input <br/>
config.shiftEnterMode = CKEDITOR.ENTER_P; //pressing the SHIFT + ENTER KEYS input <p>
config.autoParagraph = false; // stops automatic insertion of <p> on focus
};
我正在做一些我不引以为豪的解决方法。在实际保存到数据库的 Python servlet 中,我这样做:
if description.startswith('<p>') and description.endswith('</p>'):
description = description[3:-4]
编辑源代码(或关闭富文本)并将 p 标签替换为 div。然后以任何你想要的方式设置 div 的样式。
ckEditor 不会在下一次提交时添加任何包装元素,因为您已经在其中获得了 div。
(这解决了我的问题,我正在使用 Drupal 并且需要编辑器总是添加额外的 html 的小片段,但其余时间我想要包装 p 标签)。
if (substr_count($this->content,'<p>') == 1)
{
$this->content = preg_replace('/<\/?p>/i', '', $this->content);
}
将此设为您的 config.js 文件代码
CKEDITOR.editorConfig = function( config ) {
// config.enterMode = 2; //disabled <p> completely
config.enterMode = CKEDITOR.ENTER_BR // pressing the ENTER KEY input <br/>
config.shiftEnterMode = CKEDITOR.ENTER_P; //pressing the SHIFT + ENTER KEYS input <p>
config.autoParagraph = false; // stops automatic insertion of <p> on focus
};
设置这样的配置:
CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR
CKEDITOR.config.forcePasteAsPlainText = true
{{ 博客.描述 | safe }} 只使用 safe 它会删除不必要的东西。
在 VS2015 中,这可以将 Enter 键变成
<br>
myCKEControl.EnterMode = CKEditor.NET.EnterMode.BR
就个人而言,我不在乎我的结果文本是否只有
<br>
而不是<p>
。它呈现得非常好,看起来就像我想要的那样。最后,它起作用了。