如何使用 JavaScript 编码标签实体 [关闭]

Posted

技术标签:

【中文标题】如何使用 JavaScript 编码标签实体 [关闭]【英文标题】:How to Encode Tags Entities with JavaScript [closed] 【发布时间】:2015-03-01 02:23:12 【问题描述】:

如何使用 .innerhtml 对标签进行编码

数组编码 html 实体

效果不好

var find = ['<','>','"'];
var replace = ['&lt;','&gt;','&quot;'];

window.onload = function() 
    var code = document.getElementsByTagName("code");
    cl = code.length;

    for (var e = 0; e < cl; e++) 
         code[e].innerHTML = code[e].innerHTML.replace(find,replace);
;

【问题讨论】:

很好。你有问题吗?哦,你忘了&amp;。这也需要编码...... 是的,这是个问题! 使用 .textContent 代替 【参考方案1】:

创建文本节点会更安全。任何需要的逃生都将为您完成:

window.onload = function() 
  var code = document.getElementsByTagName("code");
  cl = code.length;

  for (var e = 0; e < cl; e++) 
    var tx = code[e].innerHTML;
    code[e].innerHTML = "";

    var n = document.createTextNode(tx);
    code[e].appendChild(n);
  
;
<p><code>Escaped: <b><i>foo</i></b></code></p>

<p>Not: <b><i>foo</i></b></p>

【讨论】:

以上是关于如何使用 JavaScript 编码标签实体 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

xss和实体编码的一点小思考

如何在不使用 Javascript 对标签本身进行编码的情况下对可能具有 html 标签的文本进行 HTML 编码

如何在 reactstrap 中更改 customswitch 标签的开/关?

JavaScript如何对后台utf8编码的字符串解码?

前端学HTTP之实体和编码

HTML 的实体编码(HTML Entity Encode)