将 JavaScript 代码分配给 InnerHtml 时转义 < 和 >

Escaping < and > in JavaScript code when assigning it to InnerHtml

我通过将一些 javascript 代码分配给 Html 节点

的内部 Html 属性 以编程方式将其添加到脚本标签
scriptNode.InnerHtml =new_script;

并且我的 javascript 包含少于 < and/or 大于 > 个字符,这会导致问题 - 扭曲我的结果 javascript。我怎样才能逃脱这些。

这是导致问题的示例 javascript:

function myFunc(el){
    var i=0
    for (;i < el.choice.length;i++){
        ....
    }
}

如何在为我的 Html 节点分配代码为 InnerHtml 时转义上面代码中的 <

这是一个简单的字符串转义代码:

function escapeHtml(text) {
  var map = {
    '&': '&amp;',
    '<': '&lt;',
    '>': '&gt;',
    '"': '&quot;',
    "'": '&#039;'
  };

  return text.replace(/[&<>"']/g, function(m) { return map[m]; });
}

您可以使用 >< 的 HTML 代码,即 &lt;&gt;

您可以像这样将脚本包装在 CDATA 中:

<script>
    <![CDATA[
        --YOUR SCRIPT--
    ]]>
</script>

为此,您需要对 javascript 内容进行编码和解码。请参考以下代码:

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();
}

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

htmlEncode('<b>test</b>')
// result"&lt;b&gt;test&lt;/b&gt;"

@CMS

发布previously