【问题标题】:Turn off enclosing <p> tags in CKEditor 3.0在 CKEditor 3.0 中关闭封闭 <p> 标签
【发布时间】:2010-12-30 23:19:02
【问题描述】:

CKEditor 3.x 是否可以关闭

内所有书面内容的自动封闭?

我试过了

  CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR;

但这只是在离开封闭段落时将内联换行符更改为

当前编写“测试”会产生此输出

<p>
    Test</p>

但我希望它是简单的

Test

是否有此配置属性,或者是否有其他内联编辑器更适合此?

【问题讨论】:

标签: html tags ckeditor paragraph


【解决方案1】:

好吧,我在 laravel 中使用 ckeditor,它使用简单的strip_tags($var) 函数进行输出,如下所示:

向其他页面发送赞这个值:{!! strip_tags($six_answer) !!}

和/或输出时使用相同的代码:{!! strip_tags($six_answer) !!}

结果如下,没有任何&lt;p&gt; 标签。

【讨论】:

  • 它的作品谢谢!
【解决方案2】:

将此作为您的 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.ENTER_BR 后面的;
【解决方案3】:

在 VS2015 中,这可以将 Enter 键变成 &lt;br&gt;

myCKEControl.EnterMode = CKEditor.NET.EnterMode.BR

就个人而言,我不在乎我的结果文本是否只有&lt;br&gt; 而不是&lt;p&gt;。它渲染得非常好,看起来就像我想要的那样。最后,它起作用了。

【讨论】:

  • 此答案不适用于通用 CKEditor,仅在 VS2015 中有效。
  • Kosi2801,这就是为什么我说“在 VS 2015 中”。我发布了这个答案,以防有人专门寻找 VS2015 的解决方案。当我特别说明平台时,我不赞成投反对票。请修改您的投票。另外,请在投票前仔细阅读。
  • Joe Schmucker,如果有人正在寻找 VS2015 解决方案,应该有一个单独的问题。您的答案与原始问题中的任何内容都没有关系(如何在 HTML 编辑器 CK 3.x 中关闭

    或者是否有任何其他可以用于网站的编辑器)。我确实非常仔细地阅读了您的答案,并且还研究了它是否可以以任何方式应用于网站的 CKEditor 3.x,但因为它没有答案没有用。因此,否决票以及我的评论。请不要为与所讨论的问题不同的问题提供答案。

  • 我明白了。我搜索了该问题的解决方案,并找到了这篇文章。
  • 我没有看到巡演。我会通过它。感谢您花时间解释。我很感激。
【解决方案4】:

设置这样的配置:

    CKEDITOR.config.enterMode = CKEDITOR.ENTER_BR
    CKEDITOR.config.forcePasteAsPlainText = true

【讨论】:

    【解决方案5】:

    将此作为您的 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
        };
    

    【讨论】:

      【解决方案6】:

      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 版开始,您可以配置是否要使用 &lt;p&gt;&lt;/p&gt; 等标签自动包装内联内容。这是正确的设置:

      CKEDITOR.config.autoParagraph = false;
      

      来源: http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.config.html#.autoParagraph

      【讨论】:

      • 我意识到这已被接受为正确答案,但我认为它实际上并不正确。这确实可以防止内容被包裹在段落标签中,但它也可以防止在“应该”时生成段落标签,而是插入换行符。正确的解决方案是在按下回车键时阻止默认的

        ,同时仍将内容包装在段落中。
      • 对于从直接 javascript 以外的其他部分获取配置的人:CKEDITOR.ENTER_BR 的值为 2。所以你也可以enterMode: 2
      • 它对我来说并不完美:在 BR 失败后插入一个特殊字符并在 Firefox 中出现 NS_ERROR_FAILURE
      • @MaksymilianMajer 你可以配置这个。见:docs.cksource.com/ckeditor_api/symbols/…
      • @Tomkay 在我写答案的时候你不能。我将对其进行编辑以反映新的配置选项。
      【解决方案7】:
      if (substr_count($this->content,'<p>') == 1)
      {
        $this->content = preg_replace('/<\/?p>/i', '', $this->content);
      }
      

      【讨论】:

      • if (substr_count($this->content,'

        ') == 1) { $temp = preg_replace("/

        /i","",$这->内容); $temp = preg_replace("//i","",$temp); $this->content = $temp; }

      【解决方案8】:

      编辑源代码(或关闭富文本)并将 p 标签替换为 div。然后按你想要的方式设置 div 的样式。

      ckEditor 不会在下一次提交时添加任何包装器元素,因为您已将 div 放入其中。

      (这解决了我的问题,我正在使用 Drupal 并且需要小的 html sn-ps 编辑器总是添加额外的,但其余时间我想要包装 p 标签)。

      【讨论】:

        【解决方案9】:

        在互联网上,人们已经注意到将 config.enterMode 设置为 CKEDITOR.ENTER_BR 会从 CKEditor 中删除包装段落标签。值得注意的是,该设置将 Enter 键的行为更改为插入换行符而不是段落,这是不可取的。

        参见: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 作为规范的解决方案。

        【讨论】:

        • 不错的答案。我不确定我是否更喜欢你的最后一句话,但相关配置选项的总结、它们的含义等很好!谢谢1
        • 是的,我对我的结论也不是很着迷。这真的更像是一个警告而不是一个解决方案!
        • 所以... CKEditor 看不到 BR 标签中的语义值?它们确实有目的,但如果编辑器处于 ENTER_P 模式,它就会将它们删除。
        【解决方案10】:

        找到了!

        ckeditor.js 第 91 行 ... 搜索

        B.config.enterMode==3?'div':'p'

        改成

        B.config.enterMode==3?'div':''(没有!)

        转储缓存和 BAM!

        【讨论】:

          【解决方案11】:

          在 config.js 中试试这个

          CKEDITOR.editorConfig = function( config )
          {
          config.enterMode = CKEDITOR.ENTER_BR;
          config.shiftEnterMode = CKEDITOR.ENTER_BR;
          };
          

          【讨论】:

            【解决方案12】:

            我正在做一些我不引以为豪的解决方法。在我实际保存到数据库的 Python servlet 中,我这样做:

            if description.startswith('<p>') and description.endswith('</p>'):
                description = description[3:-4]
            

            【讨论】:

            • 但是如果有多个段落,这不会导致像First paragraph&lt;/p&gt;&lt;p&gt;Second paragraph这样的东西吗?
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-09-19
            • 1970-01-01
            相关资源
            最近更新 更多