(Tinymce)使用getContent {format:text}时,在firefox中删除换行符

时间:2014-05-06 18:07:26

标签: tinymce

我试图在firefox中键入几行,并希望使用getContent {format:text}来仅获取内容。

 Here is the content: (I have three lines and each start with the leftmost postion)
 "text me if
 there is
 a chance"

 It works in chrome that it gives the following format when running getContent.
 ...
 <body>
 text me if

 there is

 a chance
 </body>
 ...

 However in firefox I got:

  <!DOCTYPE html>
  <html>
  <head>
  </head>
  <body>
  text me ifthere isa chance
  </body>
  </html>

 It seems to strip off the line break. Could someone help on this?

4 个答案:

答案 0 :(得分:2)

在TinyMCE 4+中,没有选项可以禁用剥离换行符。对我来说,一个非常脏的黑客工作 - 只需在初始化TinyMCE之前用<br>标签替换换行符:

//imagine that your textarea is called textarea#message
var a = $("textarea#message").val();
a = a.replace(/\n/g, '<br />');
$("textarea#message").val(a);

如果您之后需要没有<br>的文字,但有换行符,只需应用相同的转换,反之亦然:

var a = $("textarea#message").val();
a = a.replace(/<br\s*[\/]?>/gi, "\n");
$("textarea#message").val(a);

答案 1 :(得分:0)

为了确保不会发生这种情况,您应该使用<br>标记而不是常规行brea(ctrl + return)。这是html代码中的默认过程。

答案 2 :(得分:0)

我使用DOMParser()来解决它。

    tinymceContextValue = tinymce.get('abstract1').getContent({format: 'html'});  
    var doc = new DOMParser().parseFromString(tinymceContextValue ,'text/html');
    tinymceContextValue  = doc.body.textContent;

在这种情况下,我们仍然可以保留换行符。但请注意,不要更改tinymce配置以启用
。它无法使用它。

答案 3 :(得分:0)

参加聚会可能有点晚了,但我遇到了同样的问题。似乎firefox在文本中的换行符有一些插入到textarea中的问题。我的解决方案是这样的:

var text = text.replace("\r\n", "\\r\\n");

我猜FireFox只是Slash的忠实粉丝......

对于完整的解决方案,我使用了以下代码,它不使用格式:text,而是格式:html首先由DOMParser解析:

var text = editor.getContent({ format: 'html' });
var doc = new DOMParser().parseFromString(text, 'text/html');
text = doc.body.textContent.replace("\r\n", "\\r\\n");

如果您仍希望在代码中显示标签以及链接作为标签内的文本,请在DOMParser之前添加此行:

    text = text.replace(/<a.*href="(.*?)".*>(.*?)<\/a>/gi, ' $2: $1 ');

哪个会改变:

到此:

  • 转到某些页面://some.link

干杯!