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

HTML source field is also changing html code into escaped characters

本文关键字:HTML 转义字符 字段 代码      更新时间:2023-09-26

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

但对于版权©sign,它不是返回<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(); 
} 

但不起作用。

我不确定我是否完全理解你的意思,但尝试使用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编码

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

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

但是htmlEncode(htmlEncode("©"))将返回&amp;copy;,浏览器将其渲染为&copy;,从而为您提供实际的HTML源代码,并适当地转义以供显示。