将新行更改为 <p> 在 iF​​rame 中换行?

Change new line to <p> wrap in iFrame?

当我在 IE11 中将文本粘贴到我的 iFrame 时,它​​会忽略 /n 并将其变成空白。因为我想保持粘贴文本的格式,所以我希望保留新行。

由于 IE 会自动将新行作为新段落处理,因此我希望在粘贴文本时保持这种方式。这是我的代码

//Html is the text obtained from the clipboard. New lines are stored as /n
html = html.replace(/\n\n/g, '</p><p><br>');
html = html.replace(/\n/g, '</p><p>');
html = '<p>'+html+'</p>'

虽然浏览器出于某些原因在粘贴文本的开头添加了一个额外的 p 标记(但没有结束标记),但在大多数情况下这工作正常

这导致了很多烦人的错误。有没有更好的方法来解决这个问题?

我认为用 div 替换 p 应该可以解决问题。 p 标签很棘手。

可以做split/join个方法,看this example。对于以下 html:

<textarea class="pasted_text">Line 1
Line 2
Line 3
Line 5
</textarea>
<h4>Result (paragraphs have blue border):</h4>
<div class="result_text"></div>

我们使用 \n 拆分字符串,清理并加入段落标签:

var pastedText = $('.pasted_text').val();
/* Split text on new lines */
var split = pastedText.split('\n');
/* Remove empty paragraphs */
var clean = split.filter(function(n){ return n });
/* Join back with paragraph tags */
var joined = clean.join('</p><p>');
/* Enclose with paragraph */
var result = '<p>'+joined+'</p>';
/* Print output */
$('.result_text').html( result );