用cdata标记替换脚本标记

时间:2015-04-07 15:48:19

标签: javascript jquery

我想将<script替换为<![CDATA[<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>  

1 个答案:

答案 0 :(得分:1)

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

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

更好的是:停止修改字符串以创建HTML。使用appendChildcreateTextNode