2.1.2 延迟脚本
指的是defer属性,且只适用于外部脚本,也就是有defer属性的脚本。
由于各种延迟浏览器对延迟脚本的支持不统一,且在html5之后也不再支持defer属性,所以把延迟脚本放在页面底部仍然是最佳选择。
2.1.3 异步脚本
<script type="text/javascript" async src="example1.js"></script>
<script type="text/javascript" async src="example2.js"></script>
第二个脚本可能会在第一个脚本之前执行,因此确保两个脚本之间互相不依赖非常重要。
指定async属性的目的是不让页面等待两个脚本下载和执行,从而异步的加载页面的其他内容。因此,建议异步脚本不要在加载期间修改DOM。
异步脚本一定会在页面的load事件之前执行,但是可能会在DOMContentLoaded事件触发之前或者之后执行。
2.1.4 在XHTML中的用法
只有这样的格式才可以在各种浏览器中都支持,虽然有点hack的味道。
<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
alsert("A is equal B");
}
]]>
</script>
2.3 文档模式
准标模式和标准模式非常接近,他们的差异可以忽略不计。因此当有人提出“标准模式” 的时候,有可能是这两种模式中的任何一种。
2.4 <noscript>元素
<body>
<noscript>
<p> 页面需要浏览器支持</p>
</noscript>
</body>
这个页面会在脚本无效的情况下向用户显示一条消息。而在启用了脚本的浏览器中,用户永远也不会看到。