【问题标题】:JQuery .html() remove line break on IE 8JQuery .html() 删除 IE 8 上的换行符
【发布时间】:2013-10-23 10:14:15
【问题描述】:

所以我一直在尝试在 jQuery 中使用 .html() 函数解码字符串,除了在 IE 上它工作得非常好......

这是我的字符串:

ééé\r\nààà

我希望这是:

ééé\r\nààà

我目前在 .html() 之后使用 IE:

ééé ààà

所以这在 FF 和 Chrome 上看起来不错,但在 IE 上所有换行符都被删除了。 我发现一篇文章 (http://web.student.tuwien.ac.at/~e0226430/innerHtmlQuirk.html) 解释了问题在于 .html() 函数使用的 .innerHTML...

我真的很惊讶没有找到关于这个的话题。有什么解决办法吗? 也许在 IE 上做一个特定的功能来解码?

更多代码如下:

var itemDescription = "ééé\r\nàà&#224";
$('.feeds').find('textarea.description[ifid="' + ifid + '"]').html(itemDescription);

【问题讨论】:

  • 这是标准行为。 HTML 中的换行符被完全忽略,因此您需要使用 <br /> 标记手动强制它们。
  • ^^ 这个。执行字符串替换(拆分和连接)将\r\n 更改为<br />,它将在所有浏览器上表现一致。
  • 其实这是在textarea中,不幸的是多个
    只做了一个换行。
  • 如果是textarea,如果使用.val()而不是.html()来设置值会怎样?

标签: javascript jquery html internet-explorer innerhtml


【解决方案1】:

试试这个:

 var itemDescription = "ééé\\r\\nàà&#224";

【讨论】:

  • 尝试使用纯 JavaScript:document.getElementById(TEXTAREA_ID).innerHTML=itemDescription;
【解决方案2】:

实际上我发现的一种解决方案是这样做:

itemDescription = itemDescription.replace(/(\r\n|\r|\n)/g, '________BREAK________');
var decodedDescription = $("<div>").html(itemDescription).text();
decodedDescription = decodedDescription.replace(/________BREAK________/g, '\r\n');

【讨论】:

    猜你喜欢
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-31
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多