我必须在HTML页面的script
元素内转义哪些JavaScript代码部分? <>&
是足够还是太多?
[编辑] 这与此错误相关:http://code.google.com/p/rendersnake/issues/detail?id=15#c6评论#6
答案 0 :(得分:14)
在HTML(以及XHTML,如果您是evil person将您的XHTML网页发送为text/html
),script
标记为#CDATA
,因此,唯一的事情是你不应该在内容中</script>
,因为这就是解析器寻找信号结束标记的全部内容。不要逃避任何事情;只需确保标记内容中没有</script>
。例如,如果您有一个带有结束脚本标记的字符串,请将其拆分:
var a = '</scr' + 'ipt>';
在XHTML中,以application/xhtml+xml
发送,script
代码为#PCDATA
,因此,必须转义<
和&
,除非您可以使用<![CDATA[ ... ]]>
阻止更改为#CDATA
解析模式,但在这种情况下,请记住您的标记内容中不能包含]]>
。
答案 1 :(得分:0)
通常,我唯一逃脱的是结束标记中的/
。因此:
var msg = "<p>Do you <em>really<\/em> think so, Miss Worthington?<\/p>";
对于其他人,我依靠评论整个事情:
<script>
<!--
var msg = "<p>Do you <em>really<\/em> think so, Miss Worthington?<\/p>";
-->
</script>
评论负责HTML开放标记。
答案 2 :(得分:-2)
Escaped&lt;,&gt;和&amp;不适用于许多浏览器。如果你把所有东西都放在CDATA部分里就足够了。请注意,CDATA部分本身必须是JavaScript注释,以便与所有浏览器一起使用。
<script>
// <![CDATA[
script here
// ]]>
</script>