<script>一般放在<head>标签里面,按顺序执行。但是这就意味着必须等到全部的js代码都被下载、解析和执行完成以后,才能开始呈现页面的内容。因为浏览器遇到body标签的时候才开始呈现内容。对于那些需要很多js代码的页面来说,会导致浏览器在显示页面的时候明显延迟,而延迟期间的浏览器窗口将是一片空白。
<head><script></script></head>
<body></body>
为了解决这个问题,现代的Web应用程序一般都把全部js代码引用放在body元素中页面内容的后面。这样在解析js代码之前,页面的内容将完全呈现在浏览器中。而用户也会因为浏览器窗口显示空白页面的时间缩短而感到打开页面的速度加快。
<body>xxxxxxxxxxx<script></script></body>
<script>有一些属性:
延迟脚本
<script defer="defer"></script> 脚本可以延迟到文档完全被解析和显示之后再执行,只适用于外部脚本。defer属性告诉浏览器,脚本立即下载,但是延迟执行。多个defer文件按顺序执行。大部分浏览器,比如IE4,Firefox 3.5,Safari 5和Chrome都支持defer,但是其他浏览器会忽略这个属性,像平常一样处理脚本,因此把延迟脚本放在body的末尾是最好的选择。
异步脚本
<script async></script> async属性与defer类似,都用于高速浏览器立即下载文件,但与defer不同的是,标记async的脚本并不保证按照它们的先后顺序执行。因此,保证脚本之间互不依赖非常重要。
可省略的type属性
<script type="text/javascript">type属性 可选 考虑到约定俗成和最大限度的浏览器兼容性,目前type属性还是text/javascript。不过这个属性不是必需的,如果没有指定,则默认为text/javacript。