如何在div.html()方法中保留标记语言

时间:2011-12-13 20:24:38

标签: javascript jquery asp.net

我想要的是允许用户能够在div元素中编写标记语言 所以,如果这是一个脚本,那么writemarkup = .....

<script type="text/magicTemplate" id="scriptId">
var div = document.createElement("div"),
    span = document.createElement("span");

span.textContent = data.foo;

div.appendChild(span);

return div;
</script>

我需要在div.html(writemarkup)中写这个;

我已经尝试htmlencode所有文本服务器端然后将其写入.html()但脚本标记丢失,因为.html()实际上解码了所有内容

Dim messageUrlEncoded As String = System.Web.HttpContext.Current.Server.HtmlEncode(message)

该文本最初来自文本区域

这就是我写的消息

    var divMessage = $("<div/>");
    $(divMessageOuter).append(divMessage);
    $(divMessage).attr("class", "divmessage");
    $(divMessage).html(message);

输出结果为:

<script&nbsp;type="text/magicTemplate"&nbsp;id="scriptId"><br />&nbsp;&nbsp;var&nbsp;div&nbsp;=&nbsp;document.createElement("div"),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;span&nbsp;=&nbsp;document.createElement("span");<br /><br />&nbsp;&nbsp;span.textContent&nbsp;=&nbsp;data.foo;<br /><br />&nbsp;&nbsp;div.appendChild(span);<br /><br />&nbsp;&nbsp;return&nbsp;div;<br /></script>

2 个答案:

答案 0 :(得分:0)

您是否尝试过.text()而不是.html()?

<强>更新

您是否尝试过使用.text()而不首先在服务器上对输出进行HTML编码?

最终更新

你试过这个吗?

$(divMessage).text(message.replace('<br />', '\r\n'));

答案 1 :(得分:0)

使用text()代替html()使用JQuery填充div