Roy*_*mir 3 html asp.net cdata
我正在阅读这个问题,我有一个相关的问题:
这家伙在这里说:
它在脚本标记中用于避免解析<和&.在HTML中,这不是必需的,因为在HTML中,脚本已经是#CDATA.
Question #1
如果SCRIPT 已经是#CDATA:为什么它仍然作为CDATA渲染(在脚本标记下)?
<script type="text/javascript">
// <![CDATA[
// ]]>
</script>
Run Code Online (Sandbox Code Playgroud)
Question #2
为什么它是一个评论?(//)
XHTML应该通过使用媒体类型作为XML提供application/xhtml+xml.在HTML5中,如果标记是以XML媒体类型提供的,则标记仅为 XHTML.如果这样提供,脚本元素的内容不是 CDATA.
因此,要使XML解析器将脚本内容视为CDATA,可以将它们包装起来<![CDATA[ ]]>.
虽然历史上很少有人提供标记application/xhtml+xml,但许多人已将其页面验证为XHTML.XHTML验证器同样期望脚本内容通常不是CDATA,因此通常会拒绝嵌入在JavaScript中的标记和其他标记碎片,除非它们被转义为<![CDATA[ ]]>
在将他们的页面验证为XHTML后,他们text/html会将其媒体类型的页面提供给浏览器,这意味着浏览器将标记视为HTML,而不是XHTML.在这种情况下,HTML解析器使用,这确实会自动把脚本内容为CDATA,所以<![CDATA[和]]>.成为JavaScript引擎运行的脚本的一部分.因此,为了从JavaScript引擎中隐藏这些字符串,它们//在同一行之前,这意味着JavaScript引擎认为这些行是注释.
最后,有些人提供与两者相同的标记,application/xhtml+xml并text/html根据HTTP请求消息中的信息进行切换.出于与上述相同的原因,为了在两种模式下正确处理脚本内容, //<![CDATA[和//]]>模式是一种非常有效的技术.
| 归档时间: |
|
| 查看次数: |
2869 次 |
| 最近记录: |