如何让innerHTML 不对< 转义

问题:

xx.innerHTML="&gt;"网页上输出> 我希望&gt;就输出&gt;

解决方案:

在innerHTML 赋值前,对字符串,进行如下处理:

var tagsToReplace = {
    '&': '&amp',
    '<': '&lt',
    '>': '&gt'
};

function replaceTag(tag) {
    return tagsToReplace[tag] || tag;
}

function safe_tags_replace(str) {
    return str.replace(/[&<>]/g, replaceTag);
}


原理:

        转义字符串(Escape Sequence)也称字符实体(Character Entity)。在HTML中,定义转义字符串的原因有两个:第一个原因是像“<”和“>”这类符号已经用来表示HTML标签,因此就不能直接当做文本中的符号来使用。为了在HTML文档中使用这些符号,就需要定义它的转义字符串。当解释程序遇到这类字符串时就把它解释为真实的字符。在输入转义字符串时,要严格遵守字母大小写的规则。第二个原因是,有些字符在ASCII字符集中没有定义,因此需要使用转义字符串来表示。


上面的解决方案,其实对&符号再转义。

原始字符串:“abc&lt"

利用上述函数进行处理,得到"abc&amplt"

在innerHTML中,会对转义符进行翻译:得到"abc&lt"


此外,还可以有多种方式,得到想要的结果,请参考一下链接:

  1. http://jsperf.com/encode-html-entities
  2. http://stackoverflow.com/questions/5499078/fastest-method-to-escape-html-tags-as-html-entities
相关文章
相关标签/搜索
每日一句
    每一个你不满意的现在,都有一个你没有努力的曾经。