9

我正在使用带有 TinyMCE 的 BBCode 插件,发现预览和 HTML 代码之间的换行符不一样。

我在编辑器窗口中有以下几行:

This is line one

This is line three

第二行是空的。当我在 HTML 中查看它时,我得到以下信息。

This is line one
This is line three

没有额外的空行。

tinyMCE.init({
    mode : "textareas",
    theme : "advanced",
    plugins : "bbcode",
    entity_encoding : "raw",
    remove_linebreaks : false,
    force_p_newlines : false,
    force_br_newlines : true,
    forced_root_block : ''
});

我错过了什么?

4

8 回答 8

4

我已经在我的测试页面上使用 Firefox 3.5.7 和 Google Chrome 4.0.223.11 对其进行了测试。

html:

tinyMCE.init({
  theme : "advanced",
  mode : "textareas",
  plugins : "bbcode",
  content_css : "bbcode.css",
  entity_encoding : "raw",
  add_unload_trigger : false,
  remove_linebreaks : false,
  apply_source_formatting : false
});

段落之间的空格可以使用简单的 CSS(“bbcode.css”)删除,如下所示:

p {margin:0; padding: 0;}
于 2010-01-20T15:18:06.960 回答
1

您可能需要使用该nl2br()函数来输出您的 HTML 代码:

nl2br — 在字符串中的所有换行符之前插入 HTML 换行符

或者,您可以将force_p_newlines选项设置为true.


我已经测试过了,你是对的,但这种行为只发生在 BBCode 插件上。我相信通过使用该preformatted : true选项,tinyMCE.init您应该能够解决您的问题。

于 2010-01-14T15:21:37.803 回答
1

从 TinyMCE 配置中,您可以选择换行符的行为

http://www.tinymce.com/wiki.php/Configuration3x:force_br_newlines

TinyMCE 将在换行符上强制使用 BR 元素,而不是插入段落

tinyMCE.init({
    ...
    force_br_newlines : true,
    force_p_newlines : false,
    forced_root_block : '' // Needed for 3.x
});
于 2010-01-20T16:40:23.340 回答
1

这是另一种方法。只需更改 Enter 和 Shift+Enter 键的行为。

ed.onKeyPress.add(
    function (ed, evt) {
            if(evt.shiftKey && evt.keyCode == 13) {
                tinyMCE.execCommand('mceInsertContent', false, '<br><br>');
                tinymce.dom.Event.cancel(evt);
                //alert('shift enter key');
                return;
            } 
            if(evt.keyCode == 13 && !evt.shiftKey) {
                tinyMCE.execCommand('mceInsertContent', false, '<br>');
                tinymce.dom.Event.cancel(evt);
                //alert('enter key');
                return;             
            }                
        });
于 2011-09-08T11:03:48.970 回答
0

尝试添加配置对象

valid_elements: 'br'  //and any others that you want
于 2010-01-20T23:36:21.547 回答
0

我也有同样的问题。这是 bbcode 插件的解决方案:

forced_root_block : false,
remove_redundant_brs : false,
valid_elements: "br",
verify_html : false,
于 2010-04-14T15:21:03.833 回答
0

<p>仅供参考——尽管围绕它的政治戏剧是使用标签而不是使用标签的“正确做法” <br>,但对我来说,问题是我正在通过电子邮件发送内容——在电子邮件中,我无法控制在<p>标签上的 CSS 上(除非我想为每个标签添加内联 CSS)。因此,这些<p>标签为最终用户添加了看起来像是双行距的东西。我在我的网站上添加了 CSS 以删除间距,并且那里的内容看起来很好。

所以在使用<br>标签之后,然后用“正确的方式” <p>,我将<br>再次使用标签......

于 2010-07-08T05:48:30.720 回答
0

使用 TinyMCE 4 我有同样的问题,但对我来说工作这个配置

mode: 'exact',
inline: true, 
add_unload_trigger: false, 
schema:"html5", 
invalid_elements: "span", 
extended_valid_elements : "span[!class]", 
paste_remove_styles: true,
forced_root_block : false, 
verify_html : false,
cleanup : true
于 2013-09-26T06:54:55.277 回答