14. 第二阶段 基于图形的 HTML 文档
1993 年出现了第一个支持图形的浏览器 NCSA Mosic Mosic 是一群大学生和 Netscape
的奠基人 MarcAndreesen 共同为国际超级计算机应用中心 National Center of Superco-
mputing Applications NCSA 开发的 Web 浏览器 此时 Web 的概念已经在各个科研机
构中得到广泛应用 图形浏览器的出现 为 Internet 开辟了新的广阔天地 使得 Web 的
访问更加容易 更加具有趣味性 在同一时期图形环境很快超过基于字符的桌面系统并流
行起来
图形桌面系统加上图形 Web 浏览器 这正是人们期盼以久的梦幻组合 在仅仅几个
月的时间内 在计算机界掀起一种狂热的竞争 计算机公司 机构开始为 Web 提供内容
或是为客户提供 Web 服务
这时的 Web 仍然是静态的 Web 的内容包括文本 图形 有些还包括一些声音或视
频文件 不过这时的声音或视频文件需要单独下载 然后使用外部应用程序来进行播放
第三阶段 Dynamic HTML 文档
在 Web 发展的第一和第二阶段中 Web 页是使用 HTML 文本编辑器来编写 然后放
在 Web 服务器中供人们访问 放置于 Web 服务器上的 Web 页在大多数情况下都是不会
改变的 除非 Web 作者进行修改 这些保持不变的 Web 页一般能满足大多数用户的要求
而对一些特别的用户来说这还是不够的 比如一个为用户提供产品目录信息的 Web 站点
每个用户需要查看的内容可能会各不相同 如果使用长期保持不变的 Web 页显然不能满
足用户要求
为了实现动态产生 Web 页 Web 页作者开始使用公用网关接口 CGI 来编写服务
器端的 Web 页应用程序 CGI 程序使得用户和浏览器可以进行低级的交互行为
第四阶段 Active HTML 文档
从 1995 年开始 人们开始在 Netscape Navigator 中使用插件和 Java 这一阶段最大的
特点就是客户端 浏览器的功能得到加强 不再单独依靠服务器来运行应用程序和处理
用户信息 JavaScript Java ActiveX 和其它客户端扩展功能的应用 使得客户端对服务
器的依赖性减小 使浏览器和服务器成为真正的客户/服务器结构 浏览器成为一个功能
强大的可以运行 Web 应用程序的操作环境
1.4 Web 应用程序结构
以 Web 作为应用程序开发环境正逐渐成为一种趋势 随着 Java JavaScript ActiveX
和其它技术的出现 越来越多的人将兴趣集中到开发 Web 应用程序上 使用 Web 作为应
用程序开发环境听起来有点让人感到迷惑 因为 Web 具有分布性的特点 所以 Web 应用
程序的构成是多方面的 需要多种技术的支持
在基于局域网的客户/服务器机构中 非常典型的应用可能就是基于客户端的数据库
网络应用程序 也许你曾经使用过一些单独的工具开发过客户端应用程序 如使用 Visual
Basic 或 Delphi 而在服务器端的典型开发和维护工具恐怕要数 SQL Server
图 1-2 显示了 Web 应用程序的各个组成部分 Web 应用程序结构可以看成是各种 Web
15. 技术的集成 开发 Web 应用程序使用的每一种技术都具有一定的局限性 应用范围相当
狭小 但它们在一起使用 则可以提供有效的方法来解决 Internet 或 Intranet 应用程序的
开发问题
图1-2 Web 应用程序结构
1.4.1 客户端 Web 应用程序
客户端 Web 应用程序可以划分成以下四个部分
浏览器
HTML Hypertext Markup Language 超文本标记语言
客户端扩展 Java Applets ActiveX 和 Netscape 插件
脚本编写语言 JavaScript JScript 和 VBScript
图 1-3 显示了客户端的各种 Web 技术是如何一起工作的 下面我们将分别介绍客户
端的各种技术
1. 浏 览 器
浏览器毫无疑问是 Web 应用程序中最重要的组成部分 用户访问 Web 页 Web 应用
程序的运行 都必须在浏览器中进行 浏览器的技术相对简单一些 只需要能够正确地从
Web 服务器下载 Web 页 并将其显示在浏览中 浏览器并没有一个同一的标准 当前最
常用的浏览器是 Netscape Navigator 和 Microsoft Internet Explorer 不同的浏览器对各种
Web 技术有不同程度的支持 所以在不同的环境中选择浏览器对开发 Web 应用程序起着
关键作用
如果开发的是 Intranet 内网 的 Web 应用程序 那你可以确定客户端的用户使用一
个标准的浏览 如使用 Netscape Navigator 或 Microsoft Internet Explorer 在确定了浏览器
的前提下 Web 应用程序的开发将相对简单 而当我们将开发的 Web 应用程序发布到
Internet 上 由于客户端用户使用的浏览器是多种多样 Web 应用程序的开发将变得复杂
16. 起来 表 1-1 列出了各种浏览器对各种 Web 技术的支持情况
图1-3 客户端 Web 技术
表1-1
Netscape Navigator Microsoft Internet Explorer
JavaScript 2.0+ 3.0+
VBScript 不支持 3.0+
Java 2.0+ 3.0+
ActiveX 控件 3.0+插件 3.0+
Netscape 插件 2.0+ 3.0+
2 HTML
HTML 也是进行 Web 应用程序开发的主要技术之一 HTML 是一种标记语言 严格
地讲 HTML 并不能称之为语言 HTML 是使用各种预先定义的标记对文本进行标注 被
标注的文本相当于进行了格式化 HTML 的特点就是简单 正是这种简单的特性使它更
易于使用
被标注的 HTML 文档最终在浏览器中显示出实际的效果 如果仅使用 HTML 我们
可以创建静态的 Web 文档 如返回服务器端的查询结果 使用反馈表单或者显示 JavaScript
应用程序结果等 Web 应用程序的开发是离不开 HTML 的 比如 JavaScript 应用程序便
需要使用 HTML 标签嵌入到 HTML 文档中才能起作用
3 客户端扩展
客户端扩展功能是扩展浏览器的功能 随着活动 Web 页功能的不断地加强 仅仅靠
加强浏览器的功能还是不够的 所以需要对浏览器的功能进行扩展 客户端的扩展都是在
浏览器中使用第三方的附加软件来加强浏览器的功能 第三方附加软件需要和浏览器一起
工作 但并没有和浏览器绑定到一起
现在出现的第三方客户端扩展功能在功能上具有相似之处 但仍然有各自的特点 主
18. 1.4.2 服务器端 Web 技术
服务器端 Web 应用程序结构主要由 Web 服务器和服务器软件扩展组成 服务器的扩
展技术很多 图 1-4 显示了服务器端 Web 应用程序结构中各种 Web 技术的关系
图1-4 服务器端 Web 应用程序结构
1 Web 服务器
Web 服务器实际上是基于 TCP/IP 的应用程序 它的主要作用就是处理客户端的 HTML
文档中的表单发出的请求 然后将结果返回给客户端的浏览器供用户查看 现在主要的几
种 Web 服务器有 Netscape Enterprise Server NES Microsoft Internet Information Server
IIS 和 Apche
2 服务器扩展
从 Web 服务器自身的角度讲 它只能在浏览器进行请求的情况下向浏览器提供静态
的 HTML 文档 为了产生动态的 Web 页 需要对 Web 服务器的功能进行扩展 这些扩
展技术包括 CGI 服务器 API JavaScript 和 Java
CGI
CGI 是公用网关接口 Common Gateway Interface 的简称 是在 Web 服务器中使用
外部程序的接口方法 我们可以在服务器上运行 CGI 程序或者脚本来产生动态的 Web 内
容供客户端用户查看 通常情况下 CGI 程序用于在服务器端处理客户端浏览器中的 HTML
文档中的表单请求 CGI 程序或者脚本被放在 Web 服务器中一个特殊的目录之中 它们
接收到客户端的请求 进行处理 然后将结果以 HTML 文档的方式返回到客户端
CGI 程序的典型应用是用来处理用户发出的数据库查询请求 将查询结果以 Web 页
的方式返回给客户端的用户
在服务器端可用于编写 CGI 程序的程序设计语言很多 只要是能在服务器端运行的
程序设计语言 不一定要 Web 服务器的支持 都可以用来编写 CGI 程序 如 Java
C C ++ Visual Basic 或 PHP 在 Unix 操作系统中经常使用 Perl 来编写 CGI 程序
服务器 API
服务器 API 是 Web 服务器为编程人员提供的应用程序编程接口 API Application
19. Programs Interface 两种最常用的服务器 API 是 Netscape Server API NSAPI 和 Microsoft
Internet Server API ISAPI API 与服务器是紧密集成的 如在 Windows 环境中可以使
用 API 来创建由服务器访问的 DLL 动态链接库 而不是单独的 EXE 文件
使用服务器 API 的优点是它具有比 CGI 程序更好的性能 因为在使用 CGI 的情况下
当遇到客户端的请求时 每一个请求都会单独运行一遍 CGI 程序 造成资源的浪费 同
时也会使数据共享的性能下降
使用服务器 API 的一个不足的地方是 服务器的 API 是针对某个特定服务器的 不
同的服务器具有不同的 API 不同的服务器 API 是很难相互兼容的 比如 使用 ISAPI IIS
服务器的 编写的 DDL 就不能在 Netscape 服务器中使用 这就限制了使用服务器 API 程
序只能在相同的服务器上使用 当然 如果在使用一种服务器的情况下 用不着考虑这种
情况了
服务器端的 JavaScript
很多人都知道 JavaScript 可以用来编写客户端的脚本程序 其实 JavaScript 同样可以
用在服务器中 在服务器端对 JavaScript 提供支持只有 Netscape 服务器 Netscape 服务器
端的 JavaScript 称为 SSJS 可以用来编写由 Netscape 服务器控制的应用程序 JavaScript
在服务器端产生动态 HTML 文档的功能得到了扩展 包括 与客户端通信 在服务器端
访问外部文件和连接 SQL 数据库
Microsoft 也允许用户在 ASP Active Server Pages 中使用 Jscript 编写的脚本程序
Java
最近 Java 在服务器端的应用得到了巨大发展 Sun 公司发布了新的 Java 技术 JavaServer
Pages JSP 从其名称可以看出 JSP 是与 ASP 和 SSJS 进行竞争的技术 现在 Sun 与
Netscape 已结成同盟 称为 iPlanet 准备将 JSP 和 SSJS 融合到一起 构成一个新的 具
有超强功能的技术
另外有一些读者也许听说过 Java Servlet Servlet 是一种小的组件 有点像在 ASP 中
使用的 ActiveX 控件 Servlet 可以在 HTML 文档中被调用或者是用于创建 HTML 文档
Servlet 是为了让用户使用 Java 语言来建立快速 可靠 与平台无关的组件以便创建 Web
应用程序
1.5 JavaScript 与 VBScript
正如我们在前面提到的一样 JavaScript 并不是惟一可用的 Web 脚本语言 VBScript
和 JavaScript/JScript 一样可以用于编写 Web 脚本应用程序 VBScript JavaScript 和 JScript
虽然都是处于竞争的地位 但实际上它们之间又有互相补充的作用 在本节我们将 对
VBScript 和 JavaScript 进行比较 这将有助于我们学习 JavaScript
1.5.1 关 于 VBScript
VBScript 是 Microsoft 开发的和 JavaScript 进行竞争的一种 Web 脚本语言 从语言发
28. 第2章
JavaScript 与 HTML
主要内容
HTML 基 础
将 JavaScript 脚本嵌入 HTML 文档
编写自己的 JavaScript 脚本
本 HTML 在众多的 Web 技术中恐怕是最显得微不足道的了 但
章 HTML 的的确确是精彩的 Web 世界必不可少的基石 使用 HTML 可
导 以创建静态的 内容丰富的 有趣的 Web 页 这在 Internet 世界的
读 初期可说是一个创举 使用 JavaScript 可以为 HTML 文档增加交互
性 增强对用户操作的反应能力 使 Web 页更加具有吸引力
29. 换一个角度 可以将 JavaScript 看做是 CGI 程序的一个发展的新阶段 CGI 是基于服
务器端的应用程序 而 JavaScript 则是基于客户端的 通过使用 JavaScript Web 开发人
员可以编写脚本 然后将脚本嵌入到 HTML 文档中来创建动态的 Web 页 JavaScript 将
原来需要使用 CGI 程序在服务器端完成的处理操作放在客户端来完成 这样大大减少对
用户操作的响应时间 使用户可以在更短的时间内完成更多的事
我们知道 JavaScript 是嵌入到 HTML 文档中的 JavaScript 代码的运行在很多时候也
需要通过 HTML 对象的事件进行驱动 所以无论对于 Web 开发人员还是阅读 HTML 文档
了解 HTML 的基本知识还是很重要的
2.6 HTML 基 础
开发简单的 HTML 文档 标签和表单是件非常容易的事 在 HTML 中的大多数标签
都有一些复杂的属性 使用复杂的标签和属性可以创建更复杂 可用性更强的 Web 页
HTML 标准始终在不断地变化 当前的 HTML 版本为 4.01 HTML 的一个新的版本
名称将是 XHTML 不过这还需要得到 Word Wide Web W3C 的同意 Web 开发人员
可以随时从 W3C 的 Web 站点 http://www.w3.org 中查看有关 HTML 的各种信息 如图 2-1
所示
图2-6 W3C 上的 HTML 信息
HTML 的标准和浏览器都是在不断发展 当我们在使用 HTML 标签 特别是一些新
的标签时 必须要确保浏览器能够支持它 另外 在不同的浏览器中 也会出现一些非标
准的标签 如<marquee>标签只能在 Internet Explorer 中使用 Navigator 是不支持的 而
Navigator 中的<layer>和<ilayer>同样也不能在 Internet Explorer 中使用
所以 当我们在编写 HTML 文档时 应充分考虑多浏览器的因素 能让多种不同浏
览器都能阅读是衡量 HTML 文档好坏的一个标准
30. 2.6.2 HTML 基本知识
在客户端的 JavaScript 脚本和 HTML 文档的关系是非常密切的 所以在我们编写脚本
之前 必须先熟悉 HTML 文档的结构和 HTML 标签 当对 HTML 掌握后 编写 Web 页
将是非常简单的事 通常 一个 Web 页是由文本 标签和一些注释组成的
Web 页中的文本是最简单 最容易理解的 输入到 Web 页中的文本是我们需要向用
户展示的内容 标签则是 Web 页中最重要 需要花时间学习的东西 一个 HTML 标签通
常是由 < 开头 由 > 结尾的标志 标签的作用就是告诉浏览器该如何显示我们书
写的文本
HTML 标签有单独标签和成对标签 单独标签如<hr>和<br> 它们都是单独使用的
<hr>的作用是显示一条水平直线 <br>是用于进行换行 单独标签通常又称之为空标签
空标签只能单独使用 不能用于格式化文本
成对标签又称之为容器 它使用一个开始标签和一个结束标签来标识文本 结束标签
是在一个标签的名称前加一个 / 如下面使用的 <title> 标签
<title>学习 JavaScript</title>
在<title>和</title>之间的是容器标识的文本 学习 JavaScript 被标记为一个 HTML
文档的标题
一些 复杂 的标 签还 可以通过 设置 属性 来控 制标 签的 显示效果 如 <hr width=200
color=red>定义了一条长 200 个像素 颜色为红色的水平线 很多 HTML 标签都具有自己
的属性
还有一些特殊的标签 它们必须放在其它的容器之中才能够使用 比如<input>必须
放在<form>标签内 <li>必须放在<ol>标签内 所有的其它 HTML 标签都放在<html>和
</html>之间
在 HTML 文档中 如果需要 有时会加入适当的注释对文档进行说明 注释的内容
不会显示在浏览器中 在 HTML 文档中加入注释使用 <!--注释--> 例如
<!--使用 JavaScript 方法-->
2.6.3 HTML 文档结构
HTML 文档的结构是非常重要的 标签在文档中放置的位置的不同 会有不同的显示
效果 最简单的 HTML 文档结构如下
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
</BODY>
</HTML>
在<HTML>和</HTML>之间放置了 HTML 文档的所有内容 在<BODY>和</BODY>
31. 之间放置的是实际要显示的文本内容和其它用于控制文本显示方式的标签
下面是一个简单的 HTML 文档
<html>
<head>
<title>一个简单的 HTML 文档</title>
<script type="text/JavaScript"></script>
</head>
<body>
<h1>简单的 HTML 文档</h1>
<ol type=1>
<li>Java</li>
<li>JavaScript</li>
<li>Visual Basic</li>
<li>VBScript</li>
</ol>
<table width="3" height="3" border>
<tr>
<th colspan="12">表格</th>
</tr>
<tr>
<td>One</td>
<td>Two</td>
<td>Three</td>
</tr>
<tr>
<td>Four</td>
<td>Five</td>
<td>Six</td>
</tr>
</table>
<p>
<form>
<input name="button1" type="submit">
</form>
</p>
这是一个简单的 HTML 文件
</body>
</html>
该 HTML 文档在 Microsoft Internet Explorer 中的实际效果如图 2-2 所示
32. 图2-7 一个简单的 HTML 文档
2.6.4 公 共 属 性
在前面我们已经提到 HTML 的许多标签都具有属性 属性用于控制标签怎样操作和
如何显示 并不是所有的标签都具有属性 有一些标签具有公共的属性 这些属性的名称
和作用都完全相同 在表 2-1 中列出了 HTML 标签的共同属性和作用
表2-3
属性 作用
class 指明 HTML 标签所属的类 class
id 定义一个惟一的标识 在整个文档中标识该标签
name 为标签命名 该名称可以在 JavaScript 或 CGI 脚本中引用
style 指明标签使用的样式 style
2.7 在 HTML 文档中嵌入 JavaScript
JavaScript 代码使用<script>和</script>集成到 HTML 文档中 在一个 HTML 文档中
可以有多对<script>和</script>来嵌入多段 JavaScript 代码 每个 JavaScript 代码中可以包
含一条或多条 JavaScript 语句
<script>也有几个属性 它们的作用如表 2-2 所示
33. 表2-4
属性 作用
defer 属性值为 boolean 值 用于告诉浏览器脚本是否有输出内容
language 用于指定脚本使用的语言 现在已经很少使用该属性
src 指定使用的外部 JavaScript 代码的 URL 地址
type 代替 language 属性 用于指明脚本使用的语言
Defer
Defer 是一个简单的属性 它的作用就是告诉浏览器 JavaScript 代码是否会产生输出
也可以说 document.write()方法是否被使用 下面是一个简单的例子
<script type="text/JavaScript" defer>
<!--
//仅仅声明了一个变量 没有输出语句
var myInt=2000
//-->
</script>
language
language 属性在最近的 HTML 和 XHTML 中已经不再使用 但为了使以前的 Web 也
仍能够不加修改就可以在浏览器中正确地显示 所以现在的<script>仍保留了 language 属
性
language 属性的使用格式如下
<script language ="JavaScript">
该标签告诉浏览器脚本使用的是 JavaScript 1.0 如果是使用其它版本的 JavaScript
如 1.1 可以按照如下格式使用
<script language ="JavaScript 1.1">
language 属性的值告诉浏览器应该按照哪一种语言的版本来执行脚本代码 在表 2-3
中列出了 language 属性值可用的 JavaScript 版本和支持的浏览器
表2-5
language 属性值 支持的浏览器
JavaScript Navigator 2+和 Internet Explorer 3+
JavaScript 1.1 Navigator 3+和 Internet Explorer 3+
JavaScript 1.2 Navigator 4+和 Internet Explorer 4+
JavaScript 1.3 Navigator 4.05+和 Internet Explorer 5+
JavaScript 1.4 HotJava 3+和早期 alpha 版本的 Mozilla/Navigator 5 pre_M12
JavaScript 1.5 Mozilla/Navigator beta 1.0 M12+
如果在<script>中没有使用 language 属性 则浏览器会假设使用的是 JavaScript 1.0
我们可以利用 language 属性 在 Web 页中编写多种版本的程序代码 这样浏览器可以通
过判别语言的版本来执行它支持的代码 同时会忽略它不支持的代码
下面的 HTML 文档可以用于测试浏览器支持的 JavaScript 版本
<html>
<head>
<title>JavaScript 版本测试</title>