在HTML中使用JavaScript

在当初开发JavaScript的时候,Netscape要解决的一个重要问题就是如何做到让JavaScript既能与HTML页面共存,又不影响那些页面在其它浏览器中的呈现效果。经过尝试、纠错和争论,最终的决定就是为Web增加统一的脚本支持。而Web诞生早期的很多做法也都保留了下来,并被正式纳入HTML规范当中。

<script>元素:
    charset:可选。
    defer:可选。
    language:已废弃。
    src:可选。
    type:必需。

标签的位置:
    按照惯例,所有<script>元素都应该放在页面的<head>元素中。

延迟脚本:
    HTML4.01为<script>标签定义了defer属性。这个属性的用途是表明脚本在执行时不会影响页面的构造。也就是说,脚本会被延迟到整个页面都解析完毕后再运行。因此,在<script>元素中设置defer属性,实际上同把<script>元素放在页面最底部的效果是一样的。

在XHTML中的用法:
    可扩展超文本标记语言,即XHTML是将HTML作为XML的应用而重新定义的一个标准。编写XHTML代码的规则要比编写HTML严格得多,而且直接影响能否在嵌入JavaScript代码时使用<script>标签。

文档模式:混杂模式(quirks mode) 和 标准模式(standards mode)
    文档模式通过使用文档类型(doctype)来切换实现。
    混杂模式:会让IE的行为与(包含非标准特性的)IE5相同,而标准模式则让IE的行为更接近标准行为。
    这两种模式主要影响CSS内容的呈现,在某些情况下也会影响到JavaScript的解释执行。
如果在文档开始出没有发现文档类型声明,则所有浏览器都会默认开启混杂模式。
对于标准模式,可以通过使用下面任何一种文档类型来开启:
<!-- HTML 4.01 严格型 -->
<!DOCTYPE HTML PUBLIC " -//W3C//DTD HTML 4.01//EN" "html://www.w3.org/TR/html4/strict.dtd">

<!-- XHTML 1.0 严格型 -->
<!DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Strict//EN" "html://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

而对于标准模式,则可以通过使用过渡型(transitional)或框架型(frameset)文档类型来触发,如下所示:
<!-- HTML 4.01 严格型 -->
<!DOCTYPE HTML PUBLIC " -//W3C//DTD HTML 4.01 Transitional//EN" "html://www.w3.org/TR/html4/loose.dtd">

<!-- HTML 4.01 框架集型 -->
<!DOCTYPE HTML PUBLIC " -//W3C//DTD HTML 4.01 Frameset//EN" "html://www.w3.org/TR/html4/frameset.dtd">

<!-- XHTML 1.0 过渡型 -->
<!DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Transitional//EN" "html://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<!-- XHTML 1.0 框架集型 -->
<!DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Frameset//EN" "html://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

总的来看,混杂模式让IE像IE5,标准模式使用IE7的呈现引擎,而超级标准模式则是IE8的默认文档模式——不过,在IE8中使用下面这个特殊的<meta>值可以关闭其默认文档模式:
<meta http-equiv="X-UA-Compatible" content="IE=7" />

<noscript>元素:
    1、浏览器不支持脚本;
    2、浏览器支持脚本,但脚本被禁用。
上述任何一个条件符合,浏览器都会显示<noscript>中的内容。

把JavaScript插入到HTML页面中要使用<script>元素。使用这个元素可以把JavaScript嵌入到HTML页面中,让脚本与标记混合在一起;也可以包含外部的JavaScript文件。而我们需要注意的地方有:
1、这两种使用方式都要求把type属性设置为text/javascript,以表明使用的脚本语言是JavaScript
2、在包含外部JavaScript文件时,必须将src属性设置为指向相应文件的URL。而这个文件既可以是与包含它的页面位于同一个服务器上的文件,也可以是其它任何域中的文件。
3、所有<script>元素会按照它们在页面中出现的先后顺序依次被解析。只有在解析完成前面<script>元素中的代码之后,才会开始解析后面<script>元素中的代码。
4、浏览器呈现后面的内容之前,必须先解析完前面<script>元素中的代码。为此,一般要把<script>元素放在页面的末尾,放在页面内容之后和结束的</body>标签之前。
5、在IE中,可以通过设置defer属性让浏览器在呈现完文档之后再执行脚本。虽然defer属性是HTML4.01中规定的,但只有IE支持该属性。
另外,使用<noscript>元素可以指定在不支持脚本的浏览器中显示的替代内容。但在启用了脚本的情况下,浏览器不会显示<noscript>元素中的任何内容。