【问题标题】:HTML source field is also changing html code into escaped charactersHTML 源字段也在将 html 代码更改为转义字符
【发布时间】:2013-09-02 07:36:24
【问题描述】:

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

但是对于版权©标志,不是返回<p> © </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(); 
} 

但不工作。

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    不确定我是否完全理解您在说什么,但请尝试使用 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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-22
        • 2014-09-30
        • 2012-01-15
        • 2011-10-03
        • 2015-11-07
        • 1970-01-01
        相关资源
        最近更新 更多