1、<script>元素
<script>元素的属性
- async:表示应该立即下载脚本,但不让页面等待两个脚本下载和执行,从而异步加载页面其他内容,只对外部脚本文件有效,不能保证异步脚本按照它们在页面中出现的顺序执行。
- charset:表示通过 src 属性指定的代码的字符集。
- defer:表示脚本可以延迟到文档完全被解析和显示之后再执行,只对外部脚本文件有效,延迟脚本总是按照指定它们的顺序执行。IE7 及更早版本对嵌入脚本也支持这个属性。
- src:表示包含要执行代码的外部文件。
- type:表示编写代码使用的脚本语言的内容类型(也称为 MIME 类型)。虽然 text/javascript 和text/ecmascript 都已经不被推荐使用,但人们一直以来使用的都还是 text/javascript。实际上,服务器在传送 JavaScript 文件时使用的 MIME 类型通常是 application/x–javascript,但在 type 中设置这个值却可能导致脚本被忽略。另外,在非IE浏览器中还可以使用以下值:application/javascript和application/ecmascript。考虑到约定俗成和最大限度的浏览器兼容性,目前 type 属性的值依旧还是 text/javascript。不过,这个属性并不是必需的,如果没有指定这个属性,则其默认值仍为 text/javascript。
<script>元素的使用
使用<script>元素的方式有两种:直接在页面中嵌入 JavaScript 代码和包含外部 JavaScript文件。
在使用<script>嵌入 JavaScript 代码时,不要在代码中的任何地方出现"</script>"字符串。 例如,浏览器在加载下面所示的代码时就会产生一个错误:
<script type="text/javascript">
function sayScript () {
alert("</script>")
}
</script>
因为按照解析嵌入式代码的规则,当浏览器遇到字符串"</script>"时,就会认为那是结束的<script>标签。而通过转义字符“\”可以解决这个问题,例如:
<script type="text/javascript">
function sayScript () {
alert("<\/script>")
}
</script>
需要注意的是,带有 src 属性的标签之间再 包含额外的 JavaScript 代码。如果包含了嵌入的代码,则只会下载并执行外部脚本文件,嵌入的代码会被忽略。
通过<script>元素的src属性还可以包含来自外部域的JavaScript文件,例如<script type="text/javasrcipt" src="http://www.somewhere.com/afile.js"></script>
2、嵌入代码与外部文件
外部文件与嵌入代码比较的好处
- 可维护性:遍及不同 HTML 页面的JavaScript会造成维护问题。把所有JavaScript文件都放在 一个文件夹中,不仅容易维护,而且开发人员能够在不触及HTML标记的情况下, 集中精力编辑JavaScript 代码。
- 可缓存:浏览器能够根据具体的设置缓存链接的所有外部 JavaScript 文件。如果两个页面使用同一个文件,那么这个文件只需下载一次。因此,能够加快页面加载的速度。
- 适应未来:通过外部文件来包含JavaScript无须使用XHTML或注释hack。HTML和XHTML包含外部文件的语法是相同的。
3、文档模式
三种文档模式
- 混杂模式:浏览器的行为与(包含非标准特性的)IE5 相同
- 准标准模式:浏览器特性有很多都是符合标准的,但也不尽然。不标准的地方主要体现在处理图片间隙的时候(在表格中使用图片时问题最明显)
- 标准模式:浏览器的行为更接近标准行为
如果在文档开始处没有发现文档类型声明,则所有浏览器都会默认开启混杂模式。
准标准模式与标准模式非常接近,它们的差异几乎可以忽略不计。
开启标准模式
对于标准模式,可以通过使用下面任何一种文档类型来开启:
<!-- HTML 4.01 严格型 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<!-- XHTML 1.0 严格型 -->
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- HTML 5 -->
<!DOCTYPE html>
开启准标准模式
而对于准标准模式,可以通过使用过渡型(transitional)或框架集型(frameset)文档类型来触发, 如下所示:
<!-- HTML 4.01 过渡型 -->
<!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<!-- HTML 4.01 框架集型 -->
<!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
<!-- XHTML 1.0 过渡型 -->
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- XHTML 1.0 框架集型 -->
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
4、<noscript>元素
<noscript>元素用以在不支持 JavaScript 的浏览器中显示替代的内容。这个元素能够包含出现在<body>中的任何 HTML 元素——<script>元素除外。包含在<noscript>元素中的内容,只有在符合下列任何一个条件时,浏览器才会显示:
- 浏览器不支持脚本
- 浏览器支持脚本,但脚本被禁用
<html>
<head>
<title>Example HTML Page</title>
<script type="text/javascript" defer="defer" src="example1.js"></script>
<script type="text/javascript" defer="defer" src="example2.js"></script>
</head>
<body>
<noscript>
<p>本页面需要浏览器支持(启用)JavaScript。
</noscript>
</body>
</html>