asp.net - 如何使 <pre><code></code></pre> 的内容在 IE7 中正确呈现?

标签 asp.net jquery html internet-explorer line-breaks

我通过使用 JSON 的 JQuery 将以下 AJAX 拉取到 ASP.net Web 服务:

$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "TestWebService.asmx/Foo",
data: "{}",
dataType: "json",
success: function(msg) {
    $("#justpre").html(msg.d);
    $("#precode").html(msg.d);
} } );

TestWebService 实现了一个非常简单的 WebMethod Foo(),它返回以下内容:

[WebMethod]
public string Foo() {
    return "multi" + Environment.NewLine + "line" + Environment.NewLine + "comment";
}

最后显示结果

<pre id="justpre"></pre>

<pre><code id="precode"></code></pre>

Firefox 和 Chrome 将返回值显示为多行注释就好了。然而,IE7 将其呈现为没有换行符的单行。

FF, Chrome:
multi
line
comment

IE7:
multi line comment

我该如何解决这个问题?

最佳答案

IE 在将文本插入到 pre 标记时处理文本时存在一些已知问题。

这里有更多信息:http://www.quirksmode.org/bugreports/archives/2004/11/innerhtml_and_t.html

您最好的选择可能是嗅探 IE 并将\n 字符替换为 <br />元素或嗅探 IE 并仅使用 IE innerText,而不是 innerHTML。有点像

document.createTextNode("multi\nline\ncomment");

也可能以跨浏览器的方式实现这一目的。

关于asp.net - 如何使 <pre><code></code></pre> 的内容在 IE7 中正确呈现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1605102/

相关文章:

javascript - 动态页面刷新 JavaScript/PHP 或 'Pusher.com'

html - 主菜单不显示在手机上(纵向)

php - 如何使用显示的表中的 id 调出数据?

html - Css 布局,表与否

c# - 在 C# 监视中查看大型多维数组

ASP.NET SSL - 问题是回发,因此 OnInit 等将不起作用

jQuery keyup 事件无法在另一个 php 文件中工作

c# - 在 C# 中,我如何知道哪封电子邮件是对另一封电子邮件的回复?

c# - 将文本框中的信息发布到不同解决方案中的另一个文本框

javascript - 获取要在 ajax 请求中传递的每个 tr 的值