html、javascript会涉及到三个解析器,html解析器、xml解析器、javascript解析器。那么好了,问题来了,以上代码经常混编在一起,各自有各自的规则,终究会有冲突的,如下就是冲突。
根据W3C XHTML 1.0的规定:在XHTML中,因为<和&这两个符号有特殊意义(小于号用于标签的开始标记),所以这两个符号<和&需要转义成<和&。
当html代码中掺杂javascript代码的时候,同时javascript代码中包含了”<”字符的时候html解析会出现错误,如果机智的将”<”替换为<,这样会导致javascript无法解析。为了解决以上冲突,可以使用<![CDATA[
来处理。这样html解析过程中会将标识部分的代码当作文本字符处理,不做解析。
哎呦不对,按照规则写了javascript代码,增加了CDATA注释,为毛在IE6、Firefox、chrome将javascript跳过了没有执行呢。这个原因牵扯到html的工作模式了,我简单的理解为配置项吧,一个模式标准模式,这个时候解析器使用的是xml解析器,另一个模式是兼容模式,这个时候使用的是html解析器。CDATA注释在xml解析器中是认识的,但是html解析器是不认识的。怎么办?
一劳永逸的来了,兼容所有//<![CDATA[ 文本 //]]>
。
核心点在于三个解析器的各自的标准不同。