使用<script>元素

1.1 <script>元素:通过使用<script>元素向HTML页面中插入 JavaScript ,<script>有以下几个属性(部分已很少使用)

  • async:可选。表示应立即下载脚本,但不妨碍页面中的其他操作。注意只对外部脚本有效。

  • defer:可选。表示通过脚本可以延迟到文档完全被解析和显示之后在执行。只对外部脚本有效。

  • src:可选。表示包含要执行代码的外部文件

  • type:可选。默认值是 text/javascript

1.2 在 HTML 中使用<script>元素

  • 使用<script>元素的方式有两种:直接在页面中嵌入 JavaScript 代码和包含外部 JavaScript 文件

  • 带有 src 属性的<script>元素不应该在其<script>和</script>标签之间再包含额外的 JavaScript 代码,否则会被忽略

  • 包含在<script>元素内部的 JavaScript 代码江北从上至下依次解释。

  • 无论如何包含代码,只要不存在 defer 和 async 属性,浏览器都会按照<script>元素在页面中出现的先后顺序对它们一次进行解析

  • 为了避免浏览器在呈现页面时出现明显的延迟(延迟期间页面将是一片空白),一般都会将 JavaScript 引用放在<body>元素中页面内容的后面,即</body>之前。

1.3 延迟脚本 defer 属性

  • <script type="text/javascript" defer="defer" src="example.js"></script>

  • 在<script>元素中设置 defer 属性,相当于告诉浏览器立即下载,但延迟执行(延迟到浏览器遇到</html>标签才执行)

  • HTML5规范要求脚本按照它们出现的先后顺序执行,因此第一个延迟脚本会先于第二个延迟脚本执行,而这两个脚本会先于DOMContentLoaded事件执行。在现实当中,延迟脚本并不一定会按照顺序执行,也不一定会在DOMContentLoaded事件触发前执行,因此最好只包含一个延迟脚本。

1.4 异步脚本 async 属性

  • async 属性是 HTML5 中的新属性。

  • async 属性规定一旦脚本可用,则会异步执行。不必等待其他脚本,也不必阻塞文档呈现

  • 如果 async="async":脚本相对于页面的其余部分异步地执行(当页面继续进行解析时,脚本将被执行)

  • 如果不使用 async 且 defer="defer":脚本将在页面完成解析时执行

  • 如果既不使用 async 也不使用 defer:在浏览器继续解析页面之前,立即读取并执行脚本

1.5 嵌入代码与外部文件
使用外部文件有可维护性可缓存适应未来的优点

  • 可维护性:遍及不同 HTML 页面的 JavaScript 会造成维护问题,但把所有 JavaScript 文件放在一个文件夹中维护起来就轻松多了。

  • 可缓存:浏览器能够根据具体的设置缓存链接的所有外部 JavaScript 文件,如果多个页面使用同一个 JavaScript 文件,那么只需要下载一次,最终结果就是能够加快页面加载的速度。

  • 适应未来:通过外部文件包含 JavaScript 无须使用到 XHTML 注释 hack


_hahaha
41 声望1 粉丝

« 上一篇
jQuery插件开发