是否有可能关闭 CKEditor 3. x 中 < p >
我尽力了
CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR;
但是这只是将内联换行符改为 < br/> ,同时保留附加的段落。
当前编写“ Test”将生成此输出
<p> Test</p>
但我希望一切简单
Test
是否有这样的配置属性,或者其他内联编辑器更适合这种情况?
我正在做一件我并不引以为豪的事。在实际保存到数据库的 Python servlet 中,我这样做了:
if description.startswith('<p>') and description.endswith('</p>'): description = description[3:-4]
CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR;-这对我来说是完美的。 你有没有试过清除你的浏览器缓存-这是一个问题有时。 您还可以使用 jQuery 适配器检查它:
<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>之类的标签,您可以配置。这是正确的设置:
<p></p>
CKEDITOR.config.autoParagraph = false;
来源: Http://docs.cksource.com/ckeditor_api/symbols/ckeditor.config.html#.autoparagraph
if (substr_count($this->content,'<p>') == 1) { $this->content = preg_replace('/<\/?p>/i', '', $this->content); }
找到了!
Js line # 91... search for
B.config.enterMode==3?'div':'p'
变成
B.config.enterMode==3?'div':''(不要 P!)
B.config.enterMode==3?'div':''
扔掉你的缓存,砰!
在 config.js 中尝试这样做
CKEDITOR.editorConfig = function( config ) { config.enterMode = CKEDITOR.ENTER_BR; config.shiftEnterMode = CKEDITOR.ENTER_BR; };
在互联网上,人们已经注意到,将 config.enterMode 设置为 CKEDITOR.ENTER _ BR 会从 CKEditor 中删除包装段落标记。值得注意的是,设置更改了输入键的行为,以插入换行符而不是段落,这是不可取的。
参见: http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.enterMode“建议使用 CKEDITOR.ENTER _ P 设置,因为它的语义值和正确性。”
但是,设置删除初始段落 config.auto ぃ琌可取的,因为它引入了“不可预测的可用性问题”,因为编辑器 真的需要一个顶级块元素。
见: http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.autoParagraph
奇迹发生在 wysiwygarea/plugin.js 第410行,编辑器根据 config.enterMode 选择默认的 block 元素。更改默认块元素的配置选项将允许我们从一个 div 开始,但是每次按下回车键时我们将继续获得更多的 div,除非我们通过菜单更改段落格式。
见: http://docs.cksource.com/ckeditor_api/symbols/src/plugins_wysiwygarea_plugin.js.html
通过后处理(在服务器或 CKEditor 的 getData 事件中)删除包装段落标记是可能的,但是这会导致我们陷入与禁用 auto 段落相同的问题: 没有顶级块。
我宁愿说没有一个好的解决方案,而是只有少量的半解决方案,也不愿意接受更改 config.enterMode 作为规范解决方案。
编辑源代码(或关闭富文本) ,并将 p 标记替换为 div。然后按照你喜欢的方式设计 div。
CkEditor 不会在下一次提交时添加任何包装器元素,因为这里已经有了 div。
(这解决了我的问题,我正在使用 Drupal,需要 HTML 的小片段,编辑器总是添加额外的,但其余时间我想包装 p 标签)。
把这个变成你的 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.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
在 VS2015中,这样可以将 Enter 键转换成 <br>
<br>
myCKEControl.EnterMode = CKEditor.NET.EnterMode.BR
就个人而言,我不在乎我的结果文本只有 <br>而没有 <p>。效果非常好,看起来也是我想要的样子。到最后,还是成功了。
<p>
嗯,对于我在 laravel 中,使用 ckEditor,它使用简单的 strip_tags($var)函数输出,如下所示:
strip_tags($var)
向另一个页面发送如下值: {!! strip_tags($six_answer) !!}
{!! strip_tags($six_answer) !!}
和/或在输出时使用相同的代码: {!! strip_tags($six_answer) !!}。
结果如下,没有任何 <p>标记。