<script type="text/javascript">
function test() {
alert('<span>blah<span>');
}
</script>
<a href="#" onclick="test();">First</a><br />
<a href="#" onclick="alert('<span>blah<span>');">Second</a><br />
Third: <span>blah<span>
Run Code Online (Sandbox Code Playgroud)
为什么第一个结果不同?<script>标签是否以某种方式从实体转换中排除?
Que*_*tin 24
在HTML中,脚本和样式元素在DTD中定义为包含CDATA.这意味着在解析器遇到类似于结束标记的内容之前,将忽略实体和标记.
XHTML是不同的,这些元素中的实体和标签正常运行 - 但仅在解析为XHTML时.您可以使用以下内容将内容明确标记为CDATA <![CDATA[ … ]]>.
浏览器将使用HTML规则将XHTML视为text/html,当您尝试编写在两组规则下都正确的代码时,这会导致一个令人讨厌的大球.
避免问题的最简单方法是将脚本保存在外部文件中,并使用该src属性来包含它们.
Gum*_*mbo 12
是的,内容模型STYLE和SCRIPT特殊:
虽然
STYLE和SCRIPT元素使用CDATA作为其数据模型,但对于这些元素,CDATA必须由用户代理以不同方式处理.必须将标记和实体视为原始文本并按原样传递给应用程序.第一次出现的字符序列"</"(结束标记打开定界符)被视为终止元素内容的结尾.在有效文档中,这将是元素的结束标记.
| 归档时间: |
|
| 查看次数: |
2471 次 |
| 最近记录: |