HTML源字段也将html代码更改为转义字符

时间:2013-09-02 07:36:25

标签: javascript html

我有一个HTML源字段和一个标记文本字段。我根据标记字段的变化编写和提交的HTML。当我重新打开html字段区域时,它只提供该标记字段的HTML源代码。现在问题是,对于除了一些转义字符之外的所有其他东西,它给出了正确的html。但对于转义字符,它无法正常工作。 例如:对于空白源字段,返回<p>&nbsp</p>

但是对于版权©签名,而不是返回<p> &copy; </p>,它返回<p>©</p>

那么JS中是否有任何内置函数可以从字符串中返回转义字符的HTML部分?

我甚至试过这个:

function multiLineHtmlEncode(value) {
    var lines = value.split(/\r\n|\r|\n/);
    for (var i = 0; i < lines.length; i++) {
        lines[i] = htmlEncode(lines[i]);
    }
    return lines.join('\r\n');
}

function htmlEncode(value) {
    return jQuery('<div/>').text(value).html(); 
} 

但没有工作。

2 个答案:

答案 0 :(得分:0)

我不确定我完全理解您所说的内容,但请尝试使用htmlEncode函数,如下所示:

function htmlEncode(value){
  //create a in-memory div, set it's inner text(which jQuery automatically encodes)
  //then grab the encoded contents back out.  The div never exists on the page.
  return $('<div/>').text(value).html();
}

来自HTML-encoding lost when attribute read from input field

答案 1 :(得分:0)

如果我理解正确,请尝试在数据上调用htmlEncode()两次:

htmlEncode("©")将生成&copy;,浏览器将其呈现为©

htmlEncode(htmlEncode("©"))会返回&amp;copy;,浏览器会将其显示为字面&copy;,为您提供实际的HTML源代码,并进行适当的转发以供显示。