一、<script>元素

    HTML4.01为<script>定义了6个属性:

async:可选。表示应该立即下载脚本,但不应妨碍页面中的其他操作,比如下载其他资源或等待加载其他脚本。只对外部脚本文件有效。

charset:可选。表示通过src属性指定的代码的字符集。由于大多数浏览器会忽略它的值,因此这个属性很少有人用。

defer:可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本文件有效。IE7及更早版本对嵌入脚本也支持这个属性。

language:已废弃。原来用于表示编写代码使用的脚本语言(如JavaScript、JavaScript1.2或VBScript)。大多数浏览器会忽略这个属性,因此也没有必要再用了。

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

type:可选。可以看成是language的替代属性;表示编写代码使用的脚本语言的内容类型(也称为MIME类型)。

 

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

    在使用<script>元素嵌入JavaScript代码时,只须为<script>指定type属性。如:

<script type="text/javascript">
function sayHi(){
alert("Hi!");
}
</script>

    包含在<script>元素内部的JavaScript代码将被从上至下依次解释。在使用<script>嵌入JavaScript代码时,不要在代码中的任何地方出现"</script>"字符串。因为按照解析嵌入式代码的规则,当浏览器遇到字符串"</script>"时,就会认为那是结束的标签。而通过转义字符"/"可以解决这个问题。

    如果要通过<script>元素来包含外部JavaScript文件,那么src属性就是必需的。这个属性的值是一个指向外部JavaScript文件的链接,如:

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

也可用这种写法:

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

但是这种写法不能在HTML文档中使用这种语法。原因是这种语法不符合HTML规范,而且也得不到某些浏览器的正确解析。

 

二、标签的位置

    按照传统的做法,所有<script>元素都应该放在页面的<head>元素中;但对于那些需要很多JavaScript代码的页面来说,这无疑会导致浏览器在呈现页面时出现明显的延迟,而延迟期间的浏览器窗口中将是一片空白。为了避免这个问题,现代WEB应用程序一般都把全部JavaScript引用放在<body>元素中页面内容的后面。这样,在解析包含的JavaScript代码之前,页面的内容将完全呈现在浏览器中。

 

三、延迟脚本

    defer属性的用途是表明脚本在执行时不会影响页面的构造。也就是说,脚本会被延迟到整个页面都解析完毕后再运行。因此,在<script>元素中设置defer属性,相当于告诉浏览器立即下载,但延迟执行。defer="defer"

 

四、异步脚本

    同样与defer类似,async只适用于外部脚本文件,并告诉浏览器立即下载文件。但与defer不同的是,标记为async的脚本并不保证按照指定它们的先后顺序执行。

    在XHTML文档中,要把async属性设置为async="async"。

 

五、<noscript>元素

     <noscript>元素用以在不支持JavaScript的浏览器中显示替代的内容。这个元素可以包含能够出现在文档<body>中的任何HTML元素,<script>元素除外。包含在<noscript>元素中的内容只有在下列情况下才会显示出来:

    A 浏览器不支持脚本;

    B 浏览器支持脚本,但脚本被禁用。