如何包装:
<script> if (typeof ty === "undefined") { var ty = { chainOnLoad: function(onLoadHandler..</script>
到此:
//<![CDATA[<script> if (typeof ty === "undefined") { var ty = { chainOnLoad: function(onLoadHandler.. </script>//]]>
怎么做?
答案 0 :(得分:0)
你可以利用这个机会
查找(<(?:script(?:\s+(?>"[\S\s]*?"|'[\S\s]*?'|(?:(?!/>)[^>])?)+)?\s*>)[\S\s]*?</script\s*>)
替换<![CDATA[$1]]>
然而,问题是浏览器将CDATA解析为<![CDATA[[
[\ S \ s] *? ]]>
这意味着您必须为]]>
处理$ 1( .here。)
序列,然后做一些事情来减轻它。
否则cdata将提前终止,留下残留的垃圾。
请注意,如果没有在第一个所有标签上找到CDATA,则无法找到CDATA 来/服务基础 原因是CDATA与任何标签一样可以隐藏在其他构造中。
通常,解析所有标记的表达式是
<(?:(?:(?:(script|style|object|embed|applet|noframes|noscript|noembed)(?:\s+(?>"[\S\s]*?"|'[\S\s]*?'|(?:(?!/>)[^>])?)+)?\s*>)[\S\s]*?</\1\s*(?=>))|(?:/?[\w:]+\s*/?)|(?:[\w:]+\s+(?:"[\S\s]*?"|'[\S\s]*?'|[^>]?)+\s*/?)|\?[\S\s]*?\?|(?:!(?:(?:DOCTYPE[\S\s]*?)|(?:\[CDATA\[[\S\s]*?\]\])|(?:--[\S\s]*?--)|(?:ATTLIST[\S\s]*?)|(?:ENTITY[\S\s]*?)|(?:ELEMENT[\S\s]*?))))>
当你得到一个脚本标签时,你会先回写非脚本标签 做你的替代。