JS高程-2:在HTML中使用JavaScript

文章为《JavaScript高级程序设计》(第三版)笔记。

本节内容

  • <script>的6个属性
  • <script>标签的位置
  • 延迟脚本-defer
  • 异步脚本-async
  • 嵌入代码与外部文件
  • 文档模式

1.HTML5为<script>定义了6个属性

  • async:可选。表示应该立即下载脚本,但不应妨碍页面中的其他操作,比如下载其他资源或脚本。只对外部脚本文件有效。
  • charset:可选。表示通过src属性指定的代码的字符集。
  • defer:可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本有效。IE7及更早版本支持这个属性。
  • language:已废弃。
  • src:可选。表示包含要执行代码的外部文件。不过,在访问自己不能控制的服务器上的JavaScript文件时则要多加小心,除非那个域的所有者值得信赖。
  • type:必选。表示编写代码使用的脚本语言的内容类型。这个属性并不是必须的,如果没有这个属性,则其默认值仍为text/javascript。 

2.<script>标签的位置

<!DOCTYPE html>
<html>
  <head>
    <title>标题</title>
    <script src="example.js" async></script>
  </head>
  <body>
    <!-- 页面内容 -->
  </body>
</html>

第一种情况,<script>标签放在<head>之中,然后结合实际情况考虑是否加 async 或 defer 属性;第二种情况,现代Web应用程序一般都会把全部JavaScript引用放在<body>元素中页面内容的后面,如下:

<!DOCTYPE html>
<html>
  <head>
    <title>标题</title>
  </head>
  <body>
    <!-- 页面内容 -->
    <script src="example.js"></script>
  </body>
</html>

3.延迟脚本-defer

在<script>元素中设置defer属性,相当于告诉浏览器立即下载,但脚本延迟到整个页面都解析完成后再执行。

<script src="example1.js" defer></script>

<script src="example2.js" defer></script>

在现实当中,多个延迟脚本并不一定会按照顺序执行,也不一定会在DOMContentLoaded事件触发前执行,因此最好只包含一个延迟脚本。

IE4、Firefox3.5、Safari5和Chrome是最早支持defer属性的浏览器。其他浏览器会忽略这个属性,像平常脚本一样处理。因此,把延迟脚本放在页面底部仍然是最佳选择。

4.异步脚本-async

和defer类似,但不同的是,标记为async的脚本并不保证按照指定它们的先后顺序执行。‘

<script src="example1.js" async></script>

<script src="example2.js" async></script>

这里的第二个脚本可能会在第一个脚本之前执行。使用async属性的目的是不让页面等待两个脚本的下载和执行,从而加载页面其他内容,为此,建议异步脚本不要在加载期间修改DOM。

异步脚本一定会在页面的load事件前执行,但可能会在DOMContentLoaded事件触发之前或之后执行。

在XHTML文档中,defer要设置为defer="defer",async要设置为async="async"。

5.嵌入代码与外部文件

在没使用defer和async属性时,页面从上到下依次执行,在加载和执行JavaScript代码时,页面中的其余内容都不会被浏览器加载或显示。

一般情况下,建议尽可能使用外部文件的形式来包含JavaScript代码,其优点如下:

  • 可维护性
  • 可缓存:浏览器能够根据具体的设置缓存链接的所有外部JavaScript文件。如果有两个页面都使用同一个文件,那么这个文件只需下载一次。
  • 适应未来

6.文档模式

IE5.5引入了文档模式的概念,而这个概念是通过使用文档类型(doctype)切换来实现的。最初的文档模式是:混杂模式标准模式。混杂模式会让IE的行为与(含非标准特性的)IE5相同,而标准模式则让IE的行为更接近标准行为。后来IE又提出准标准模式,由于和标准模式差异不大,所以标准模式一般指除混杂模式之外的其他模式。

猜你喜欢

转载自blog.csdn.net/qq_39025670/article/details/104828404