【问题标题】:How to prevent the <p> tag from wrapping around my input with tinymce in Rails?如何防止 <p> 标签在 Rails 中使用 tinymce 包裹我的输入?
【发布时间】:2015-12-12 07:24:13
【问题描述】:

默认情况下,tinymce 输入作为段落标签传递给 DOM:

我想删除该元素包装器,以便 tinymce 准确传递我在文本编辑器中输入的内容。 我怎么做 ?请如果您提供代码,您还可以让我知道该代码的添加位置吗? 问候!!!

【问题讨论】:

    标签: ruby-on-rails forms tinymce


    【解决方案1】:

    如果你只想去掉边距:

    tinymce.init({
    ...
    setup: function(ed) { 
      ed.on('init', function() { 
        var doc = this.getDoc().getElementById("tinymce");
        doc.style.margin = 0;
      });
    },
    });
    

    【讨论】:

      【解决方案2】:

      我像这样用 gsub 和 regex 去掉那些讨厌的东西:

      <%= @event.desc_long.gsub(/^\<p\>/,"").gsub(/\<\/p\>$/,"") %>
      

      第一个 .gsub 删除 TinyMCE 字符串开头的 &lt;p&gt;,第二个删除结尾的 &lt;/p&gt;。工作对我来说很棒。这适用于任何使用正则表达式的语言(gsub 用于 rails)。 JavaScript 示例:

      var str = "{TinyMCE HTML string}"; 
      str = str.replace(/^\<p\>/,"").replace(/\<\/p\>$/,"");
      

      希望这会有所帮助!

      编辑:

      Re:放在哪里。您将 TinyMCE 放入数据库中的内容单独保留。仅在显示时添加上述内容(在视图中,通过电子邮件发送)。

      【讨论】:

      • 我建议避免这种情况。 PalinDrome555 的答案对我来说似乎更合适。
      【解决方案3】:

      您需要将forced_root_block 指定为false。但是文档指出,没有将根块作为&lt;p&gt; 标签会削弱编辑器的行为。换行符将用&lt;br&gt; 标记代替。

      tinyMCE.init({
          selector: 'textarea',
          forced_root_block: false
      });
      

      查看文档here

      【讨论】:

      • 安静的旧帖子,但我今天遇到了它。 +1 解决我的问题。但是,此解决方案仅适用于 TinyMCE 3.x,目前在 tinyMCE 4.X 中不支持该选项,请参见页面 [github.com/tinymce/tinymce/issues/2634]。此外,在加载 tiny_mce.js 文件后,显示的代码会进入您的 Javascript。
      • 根据他们的documentation仍然支持
      【解决方案4】:

      实际上我解决了我的问题。我所要做的就是更改段落标签的样式:

      p {margin: 0; padding: 0;}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多