第二章 在HTML中使用Javascript
2.1<script>元素
延迟脚本(defer = "defer")表明脚本在执行时不会影响页面的构造,脚本会被延迟到整个页面都解析完毕后再运行。相当于告诉浏览器立即下载,但延迟执行。HTML5规定要求脚本按照它们出现的先后顺序执行。
异步脚本(async)如果有多个脚本文件,执行顺序不确定,指定async属性的目的是不让页面等待两个脚本下载和执行,从而异步加载页面其他内容。
XHTML代码的规则比编写HTML严格得多,下面的代码块在HTML中是有效地,但是在XHMTL中是无效的
<script type="text/javascript"> function compare(a, b) { if(a < b) { alert("A is less than B"); } else if (a > b) { alert("A is greater than B"): } else { alert("A is equal to B"); } }</script>
在XHTML中<(小于号)在XHMTL中将被当作开始一个新标签来解析,但是作为标签来讲,小于号后面不能跟空格,因此导致语法错误。可以使用<代替小于号。
保证能再XHTML中能正常执行的另外一个方式是用一个CData片段来包含Javascript代码,如下所示
<script type="text/javascript"><![CDATA{ function compare(a, b) { if(a < b) { alert("A is less than B"); } else if (a > b) { alert("A is greater than B"): } else { alert("A is equal to B"); } }}]></script>
在兼容CDATA的浏览器中,该方法可以解决问题,还有不少浏览器不兼容XHTML,不支持CDATA片段,使用Javascript注释掉标记即可,如下所示
<script type="text/javascript">//<![CDATA{ function compare(a, b) { if(a < b) { alert("A is less than B"); } else if (a > b) { alert("A is greater than B"): } else { alert("A is equal to B"); } }//}]></script>
2.3文档模式
混杂模式(quirks mode)会让IE的行为与IE5相同,
标准模式(standards mode)让IE的行为更接近标准行为。
这两种模式主要影响CSS内容的呈现,但在某些情况下也会影响到Javascript的解释执行。
如果在文档开始处没有发现文档类型声明,则所有浏览器都会默认开启混杂模式,不推荐这种做法,不同浏览器在这种模式下的行为差异非常大。
IE又提出了一种准标准模式(almost standards mode),这种模式下的浏览器很多都是符合标准的。准标准模式可以通过过渡型或框架集型文档类型来触发。
2.4 <noscript>元素
包含在<noscript>元素中的内容只有在下列情况下才会显示出来:
符合上述任何一个标准,浏览器都会显示<noscript>中的内容
新闻热点
疑难解答