用cdata标记替换脚本标记

Replacing script tag with cdata tags

本文关键字:脚本 替换 cdata      更新时间:2023-09-26

我想用<![CDATA[<script替换<script,用</script>]]>替换</script>,并将其放入一个新的dom元素中。

所以我写了一个正则表达式来替换标签,我需要把这个脚本作为内部html放在下面这样的元素中

我在下面写了代码

  var html = "<script src='"https://dynamic.test.com/test/test/common/js/test.js'"></script>";
  html = html.replace(/<script/ig,"<!CDATA[<script")
             .replace(/<'/script>/ig,"</script>]]>");

 console.log(""$j("<test/>").html(html)[0].outerHTML);

我得到的输出如下

 <test><!--CDATA[<script src="https://dynamic.test.com/test/test/common/js/test.js"-->]]&gt;</test>

但预期的输出是

    <test><!--CDATA[<script src="https://dynamic.test.com/test/test/common/js/test.js"></script>]]></test>  

看起来您的文档处于HTML模式(即用作text/html)。HTML不支持显式CDATA部分。您需要一个XML文档。

请改用实体。将<>等替换为&lt;&gt;

更好的做法是:停止使用字符串来创建HTML。使用appendChildcreateTextNode