我想将<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"-->]]></test>
但预期的输出是
<test><!--CDATA[<script src="https://dynamic.test.com/test/test/common/js/test.js"></script>]]></test>
答案 0 :(得分:1)
您的文档似乎处于HTML模式(即作为text/html
)。 HTML不支持显式CDATA部分。您需要一个XML文档。
改为使用实体。将<
,>
等替换为<
,>
等。
更好的是:停止修改字符串以创建HTML。使用appendChild
和createTextNode
。