我们的中间层需要采取措施阻止</script>
逐字逐句地出现在javascript字符串中。例如,在所有浏览器中,HTML解析器在其第一次传递中将忽略javascript上下文,请参阅第一个关闭脚本,然后查看垃圾,然后查看第二个关闭脚本。请参阅:using-script-in-a-javascript-literal
<HTML>
<BODY>
start
<SCRIPT>
alert( "</SCRIPT>" );
</SCRIPT>
finish
</BODY>
</HTML>
我首先要解决的问题是将我们为javascript字符串转义的字符扩展为包含'&gt;'和'&lt;' - 这似乎适用于我测试过的浏览器,但看起来并不符合标准:escapesequence.shtml
编辑:此规则专门用于呈现为javascript字符串文字的内容。
答案 0 :(得分:5)
您需要以某种方式删除文字</
:
"<" + "/"
"<\/"
"<\x2F"
"\x3C/"
"<\u002F"
"\u003C/"
请参阅description of the CDATA type:
虽然
STYLE
和SCRIPT
元素使用CDATA作为其数据模型,但对于这些元素,CDATA必须由用户代理以不同方式处理。必须将标记和实体视为原始文本并按原样传递给应用程序。第一次出现的字符序列“</
”(结束标记打开定界符)被视为终止元素内容的结尾。在有效文档中,这将是元素的结束标记。