第 三 部 分
V is u a l C + + 与
In te rn e t
返 回 总 目 录
目 录
8 .4 C O M + In te rn e t 的未来 5 1
8 .5 从 In te rn e t 上下载 A c t iv e X 5 4
- [.7 使用 D IA N TZ .EX E 创建组件 下载 (C A B ) 文件 8
8](#使-用-di-an-tz-.e-xe-创-建-组-件-下-载-c-ab-文-件)
第 9 章 J a v a S c r ip t 概 览 9 5
- [. 1 A c tiv e X S c r ip tin g 概要 9
8](#ac-ti-ve-x-scr-ip-ti-ng-概-要)
9 .2 J a v a S c r ip tin g 基础知识 1 0 7
第 10 章 创 建 Ac tiv e X 控 件 1 3 8
- [.1 理解 A c tiv e X 控件的一 些背景知识 1 4
1](#理-解-ac-ti-ve-x-控-件-的-一-些-背-景-知-识)
10 .2 一个基于 M F C 的基本按 钮编程示例 1 4 9
- [.3 在 N e ts c a pe N a v ig a to r 和 In te rn e t E x p lo re r 2
0 6](#在-ne-ts-ca-pe-na-vi-ga-to-r-和-in-te-rn-et-ex-pl-or-er)
第 11 章 创 建 Ac tiv e X 文 档 应 用 程 序 2 1 4
11 .1 什么是 A c t iv eD oc u m en t OL E 文档对象 .............................................................. 2 1 7
- [.2 A c t iv e D oc um e n t 结构概述 2 3
6](#ac-ti-ve-do-cum-en-t-结-构-概-述)
- [.3 创建 A c t iv e D o c u m e n t 2 5
1](#创-建-ac-ti-ve-do-cum-en-t)
第 12 章 使 用 URL 和 M o n ik e r 2 7 0
12 .2 创建 U R L M o n ik e r 2 7 6
第 13 章 使 用 In te rn e t 信 息 服 务 器 ( IIS ) 3 0 2
13 .3 在 W e b 页中使用 IS A P I 扩展 3 2 4
13 .5 使用 IS A P I 过滤器划 分 W e b 站点的密 级 3 3 9
13 .6 使用 IS A P I 扩展转发 服务器信息 3 4 3
13 .7 使用 IS A P I 过滤器请 求用户名和口 令字 3 5 5
第 8 章 设 计 W e b 页
以 任 何 方 式 接 触 In te rn e t 都 需 要 在 一 定 程 度 上 了 解 HT M L 超 文 本 标 记 语 言 知 识 对 于 这 一 点 无 论 你 怎 样 努 力 都 不 能 躲 开 它 以 任 何 形 式 正 常 进 入In te rn e t 都 要 涉 及 到 访 问 W e b 页 在 你 领 悟 到 这 一 点 之 前 这 种 说 法 看 起 来 好像 太 笼 统 在 键 入 h ttp : 时 就 会 发 现 你 自 己 正 在 进 入 W e b 页 这 种 W e b 页 通过 H TTP 超 文 本 传 输 协 议 使 用 了 HT M L 而 不 键 入 这 些 字 母 就 不 能 进 行任 何 信 息 交 换
技 巧 如 果 愿 意 的 话 , 大 多 数 情 况 下 可 以 避 免 学 习 HTML 标 记 (tags) 诸 如Visual Int erDev 之 类 的 产 品 使 你 很 容 易 地 创 建 含 有 ActiveX 控 件 的Web 页 面 当 然 这 就 意 味 着 为 了 创 建 并 测 试 ActiveX 控 件 在 购买 Visual C++ 时 不 得 不 将 另 一 个 附 加 产 品 买 回 来 显 然 使 用 诸 如Visual Int erDev 之 类 的 产 品 会 使 你 受 益 而 购 买 并 学 习 另 一 个 产 品则 对 你 产 生 不 利 影 响 根 据 你 实 际 要 创 建 的 W e b 页 数 量 你 需 要 对 此权 衡 利 弊 如 果 仅 仅 是 偶 尔 地 创 建 W e b 页 那 么 手 工 写 出 代 码 可 能仍 是 上 策 反 之 如 果 大 部 分 时 间 你 都 是 在 创 建 Web 页 那 么 就 应该 投 资 购 买 诸 如 Visual InterDev 之 类 的 产 品 了 Osborne/Mc Graw- hill 公 司 将 出 版 我 的 新 著 Visual 工 作 室 参 考 手 册 全 集 Visual Studio: The Complete Reference) 从 这 本 书 中 你 可 以 就 怎 样 使 用
Visual C++ 及 诸 如 Visual Int erDev 之 类 产 品 学 到 更 多 的 东 西 这本 书 介 绍 了 怎 样 使 用 Visual 工 作 室 包 含 的 各 种 语 言 产 品 在 大 环 境 下 特 别 是 在 团 队 环 境 下 工 作 时 去 创 建 应 用 程 序
作 为 对 使 用 A c tiv e X 感 兴 趣 的 V is u a l C + + 程 序 员 你 在 创 建 W e b 页 方 面 可能 会 花 费 大 量 时 间 也 可 能 不 在 这 方 面 耗 费 时 间 但 是 你 需 要 了 解 它 们 是 如何 工 作 的 以 便 于 你 能 帮 助 他 人 使 用 你 的 控 件 学 习 HT M L 起 初 看 起 来 有 点 难有 大 量 的 标 记 就 象 程 序 语 句 一 样 可 以 用 于 创 建 W e b 页 查 看 这 些 标 记 不 成问 题 ─ ─ 市 场 上 的 任 何 浏 览 器 都 提 供 了 V ie w / S ourc e 命 令 用 它 们 就 可 以 看 到W e b 站 点 的 任 何 W e b 页 的 原 始 HT M L 图 8 .1 是 一 个 典 型 例 子
注 释 和 本 书 中 其 它 图 示 一 样 对 浏 览 器 的 配 置 不 一 样 可 能 看 到 的 显 示画 面 外 观 会 有 所 变 化 另 外 Microsoft 和 Netscape 经 常 会 改 变 它们 各 自 的 W e b 站 点 和 浏 览 器 的 画 面 外 观 最 后 增 加 插 件 也 会 稍 稍 改变 浏 览 器 的 外 观 请 记 住 把 本 章 中 所 有 的 图 示 及 说 明 看 作 是 你 将 看到 的 画 面 的 一 个 基 础 你 的 实 际 的 屏 幕 显 示 可 能 会 与 本 书 所 说 明 的 有所 不 同
图 8 .1 你能 够查 看大 多数 W e b 页面 的源 代码 ──当 你想 学点 新东西 时这 是个方 便的 特色
至 少 有 一 种 简 单 的 途 径 开 始 学 习 过 程 这 正 是 我 们 这 儿 将 要 讨 论 的 问 题仅 仅 使 用 12 种 HT M L 标 记 就 可 以 构 成 一 个 W e b 站 点 以 后 再 用 另 外 的 标 记 对
它 们 进 行 修 饰 这 就 是 本 章 第 一 节 的 内 容 我 们 考 察 这 12 种 标 记 在 任 何 In te rn e t
站 点 ─ ─ 甚 至 是 提 供 最 小 级 别 功 能 的 站 点 ─ ─ 都 可 看 到 它 们
技 巧 如 果 要 设 计 大 量 的 W e b 页 那 么 能 利 用 View/Sourc e 命 令 而 获 益先 简 单 地 找 到 一 个 含 有 你 想 使 用 的 那 种 特 色 的 W e b 站 点 然 后 查 看 其基 础 源 代 码 从 而 知 道 别 的 程 序 员 是 如 何 完 成 这 一 任 务 的 在 其 它 许多 编 程 情 况 中 代 码 或 被 隐 蔽 或 被 加 密 或 用 其 它 不 可 访 问 形 式 而 HTML 却 保 留 了 自 己 的 类 似 英 语 的 语 法 结 构 即 便 是 在 一 个 Internet 站 点 使 用 时 也 是 如 此
— 旦 记 住 了 这 12 种 标 记 我 们 就 看 一 下 需 要 使 A c tiv e X 工 作 的 另 外 一 个 标记 我 们 将 把 你 对 一 个 A c tiv e X 控 件 知 道 的 每 一 样 东 西 组 合 起 来 产 生 一 个 非常 简 单 的 W e b 页 第 11 章 将 说 明 怎 样 创 建 这 个 A c tiv e X 控 件 然 后 使 用这 个 W e b 页 就 能 干 点 事 了 甚 至 可 以 把 它 作 为 以 后 创 建 新 的 W e b 页 的 模 板我 的 想 法 就 是 提 供 HT M L 的 基 本 知 识 而 不 是 使 你 成 为 一 名 HT M L 编 程 权 威者
注 释 本 章 不 打 算 把 需 要 知 道 的 有 关 HTML 的 每 一 个 细 节 都 作 介 绍 有 些 人抱 怨 就 这 个 题 目 即 便 写 一 大 本 书 也 不 足 以 完 成 这 项 工 作 我 们 想 做的 是 在 一 个 非 常 基 本 的 级 别 上 ─ ─ 大 多 数 同 类 书 籍 中 漏 掉 的 级 别 ─ ─ 考 察 一 下 HTML 看 完 本 章 就 有 了 足 够 多 的 信 息 使 得 学 习 其 它 HTML 标 记 更 加 容 易
AS C I I 文 本 文 件 能 包 含 足 够 多 的 使 A c tiv e X 工 作 的 信 息 这 看 起 来 有 些 奇怪 学 习 了 A c tiv e X - 专 用 标 记 之 后 我 们 将 研 究 一 下 浏 览 器 是 如 何 解 释 这 一 标记 并 使 A c tiv e X 工 作 的 了 一 旦 知 晓 了 M ic ros oft 在 In te rn e t E x p lore r 3 .x 和 4 .x 中 包 含 的 小 秘 密 后 就 会 发 现 完 成 上 述 任 务 并 不 是 一 件 难 事
M ic ros oft 还 引 入 了 称 之 为 CO M + 组 件 对 象 模 型 P lu s 的 新 技 术 M ic ros oft
正 是 最 终 利 用 这 一 技 术 在 In te rn e t 上 扩 大 编 程 的 它 不 是 A c t iv e X 的 替 代 物
A c tiv e X 仍 保 持 作 为 创 建 组 件 的 选 择 技 术 但 CO M + 将 最 终 会 在 In te rn e t 上 取 代A c tiv e X 本 章 后 面 的 一 节 将 提 供 这 一 激 动 人 心 的 新 技 术 的 概 况 从 而 认 识 到 在将 来 它 会 怎 样 对 你 有 所 帮 助
注 COM+ 最 终 会 在 Internet 上 取 代 ActiveX 而 ActiveX 将 仍 保 留 作 为Microsoft 的 应 用 程 序 组 件 技 术
掌 握 了 基 本 的 HT M L 标 记 和 A c tiv e X 标 记 之 后 我 们 就 对 简 单 的 HT M L 页进 行 两 个 容 易 完 成 的 增 强 这 两 个 增 强 一 个 是 声 音 一 个 是 动 画 G IF 它 们摇 旗 呐 喊 避 免 了 枯 燥 重 要 的 一 点 是 为 你 的 W e b 站 点 增 加 情 趣 时 别 把 它 搞得 太 大 以 至 于 不 能 在 合 适 的 时 间 内 下 载
本 章 的 最 后 一 节 讨 论 A c tiv e X S D K 提 供 的 一 个 实 用 程 序 D IA N T Z .E XE
它 允 许 压 缩 一 个 或 多 个 A c tiv e X 控 件 减 少 下 载 时 间 M ic ros oft 正 是 使 用 这 个实 用 程 序 产 生 了 用 于 发 布 W ind ow s 9 5 的 CA B 文 件 可 以 发 现 D IANT Z 实 用程 序 的 功 能 远 远 不 止 是 用 于 A c tiv e X 开 发
- 1 HT ML 概 要
关 于 HT M L 即 使 写 上 一 大 厚 本 书 也 不 足 以 涵 盖 所 有 标 记 的 全 部 变 化让 我 们 首 先 讨 论 一 下 标 记 这 个 术 语 每 一 个 HT M L 语 句 由 一 个 或 多 个 标 记组 成 一 个 标 记 就 象 一 个 程 序 设 计 语 句 有 的 标 记 用 于 标 明 HT M L 文 档 各 个 章节 的 开 始 与 结 束 而 其 它 的 标 记 则 用 于 标 明 进 行 其 它 处 理 由 于 公 司 更 多 的 涉足 In te rn e t 标 记 的 复 杂 性 也 在 变 化 我 们 将 讨 论 落 入 本 章 范 围 的 两 种 变 化 但是 由 于 篇 幅 所 限 我 们 将 不 讨 论 其 他 的 变 化 本 章 将 指 出 在 什 么 地 方 可 以 找到 一 些 另 外 的 信 息
注 标 记 类 似 于 微 编 程 语 句 允 许 格 式 化 HTML 文 档 或 者 处 理 信 息
最 基 本 的 HT M L 文 档 大 概 包 含 12 种 不 同 的 标 记 其 中 一 些 是 强 制 性 使 用 的另 一 些 仅 用 于 提 供 指 定 类 型 的 功 能 我 们 仅 讨 论 标 记 的 最 简 单 形 式 ─ ─ 但 能 够对 大 多 数 标 记 添 加 限 定 词 以 影 响 它 们 工 作 的 方 式 例 如 可 以 添 加 一 个 字 体 描述 或 者 让 标 记 对 其 所 在 页 的 文 本 进 行 居 中 处 理 表 8 .1 是 将 要 讨 论 的 12 种 基本 标 记 的 概 要
注 据 经 验 估 算 包 括 图 形 在 内 Web 页 要 保 持 小 于 60KB 否 则 下 载 会占 用 太 多 的 时 间
表 8. 1 1 2 种基本 H TML 标注概要
标记 | 使用方式 | 说明 | |
---|---|---|---|
<H T M L > < / H T M L > |
和 |
强制使用 |
每 个 HT M L 文 档 都 以 < H TM L> 开 始 以 < / H T M L > 结 束 这 样 浏 览 器 就 可 以 知 道 从什么地方 开始和结束读 取 |
<H E A D > < / H E A D > |
和 |
正常使用 |
当 查 看 HT M L 文 档 时 你 将 看 到 一 个 头 部 和一 个正 文 头 部 通 常 标 识 W e b 站点 并 定义页面设 置 |
< B ODY> < / B ODY> |
和 |
正常使用 |
将把 W e b 页 内 容 的 主 要 部分 放在 这两 个 标记 之 间 正 文 部 分 通 常 包 含 着 访 问 站 点 的用户要查 找的信息 |
<H x> 和 < / H x > |
选择使用 |
书 籍 和 其 它 文 本 形 式 通 常 把 它 们 所 包 含的 信 息 用 标 题 分 成 章 节 本 标 记 允 许 对 W e b 站点添加 标题 |
|
<P> |
选择使用 |
HT M L 总 是 假 定 你 键 入 的 所 有 文 本 不论 它 们 是 否 在 一 行 都 是 同 一 段 的 一 部 分使 用 本 标 记 增 加 一 个 回 车 符 和 两 个 换 行 符 标识段 结束 |
|
<B R > |
选择使用 |
常常想要 在不增加新行 的情况下回到 页的左端 本 标记可以完成 这一工作 它添 加一个回车 符和一个换行 符 |
续 表
<H R > |
选择使用 |
水 平 标 尺 标 记 允 许 一 行 可 以 跨 页 它 还 在 段落之间 增加空白 |
---|---|---|
<A H R E F = " D e s tin a tio n D o c u m e n t" > 和 < / A > |
选择使用 |
与其 它文 档的 超链 接 是 W e b 页最 普通 的 组成部分 |
<A N A M E = " A nc ho r N a m e " > 和 < / A > |
选择使用 |
锚 地 标 记 允 许 从 页 的 一 点 移 动 到 另 一 点 超级链接 使用 < A H R E F = " C urre nt D o c u m e nt #A n c h o r N a m e " > 来访问这 一标记 |
<E M > 和 < / E M > |
选择使用 |
不 同 的 浏 览 器 对 强 调 标 注 反 应 不 同 大 多数浏览器 都是用斜体显 示文本 |
< S T R ONG> 和 < / S T R ONG> |
选择使用 |
和 强 调 标 注 一 样 本 标 记 由 浏 览 器 决 定 如何 对 < S T R ONG> 标 记 作 出 反 应 大 多 数 浏览器看到 这一标记时用 黑体显示文本 |
<PR E > 和 < / PR E > |
选择使用 |
经 常 不 想 让 浏 览 器 对 文 本 重 新 格 式 化 预 格式化标 记指示浏览器 保持文本格式 不变 |
现 在 已 经 对 这 些 标 记 的 作 用 有 了 基 本 了 解 让 我 们 再 对 它 们 中 的 几 个 进 行详 细 的 讨 论 下 面 的 章 节 讨 论 一 些 标 记 它 们 会 使 你 在 多 少 有 些 一 致 的 基 础 上进 行 使 用 并 且 在 大 多 数 情 况 下 使 用 时 要 做 一 些 工 作 不 必 担 心 在 讨 论 中 不 能完 全 掌 握 它 们 在 创 建 简 单 的 HT M L 文 档 那 一 节 中 会 详 细 地 讨 论 实 际 使 用过 程 了 解 标 记 的 工 作 方 式 有 助 于 你 弄 明 白 它 们 与 浏 览 器 是 如 何 相 互 作 用 的
理 解 <HEAD> 标 记
头 部 让 浏 览 器 在 开 始 显 示 时 知 道 你 对 该 页 做 些 什 么 但 它 本 身 并 不 提 供 任何 形 式 的 实 际 内 容 例 如 请 看 图 8 .2 中 h ttp ://w w w . m ic ro s o ft.c o m 的 源 代 码
图 8 .2 < H E A D > 标记 不影 响页 的内容 但 确 实 定义了 页的 外观
注 意 到 头 部 会 有 一 个 标 题 一 些 体 例 命 令 和 几 个 元 命 令 事 实 上 这 三 个元 素 代 表 了 通 常 可 以 在 HT M L 页 头 部 中 找 到 的 仅 有 的 三 种 标 记
不 要 以 为 <M E T A > 标 记 是 在 头 部 部 分 找 到 的 脚 本 的 唯 一 形 式 例 如 如 果访 问 h ttp :// w w w .n e ts c a p e .c o m 就 可 以 在 其 头 部 找 到 J a va S c r ipt 命 令 不 用 在 乎页 设 计 者 使 用 哪 种 脚 本 语 言 关 键 是 脚 本 的 作 用 是 为 页 的 某 些 元 素 添 加 指 令
— 种 方 法 是 把 头 部 当 作 页 的 其 余 部 分 的 定 义 区 它 影 响 的 是 页 的 整 体 外 观 而 不提 供 任 何 形 式 的 内 容 事 实 上 通 常 总 是 想 对 访 问 站 点 的 访 问 者 隐 藏 掉 这 一 部分
使 用 <Hx> 标 记 添 加 标 题
与 一 本 书 中 的 标 题 把 文 本 分 隔 成 小 节 一 样 HT M L 文 档 中 的 标 题 标 记
<H x > 把 内 容 部 分 分 隔 成 不 同 部 分 HT M L 规 范 提 供 了 6 个 级 别 的 标 题 通常 这 6 个 级 别 间 的 唯 一 差 别 是 显 示 标 题 时 使 用 的 字 体 大 小 标 题 的 审 美 需 求是 人 们 所 要 求 的 使 用 标 题 并 无 什 么 神 秘 可 言 它 们 仅 在 文 本 的 小 节 之 间 创 建物 理 分 隔 这 有 助 于 访 问 你 的 站 点 的 人 理 解 你 所 提 供 的 材 料
技 巧 数 字 小 的 标 题 级 别 使 用 的 字 体 比 数 字 大 的 标 题 级 别 的 使 用 的 字 体大 例 如 <H1>比 <H2> 使 用 户 可 以 看 到 更 大 的 字 体
怎 样 创 建 一 个 小 节 标 题 呢 ? 在 <H x > 标 记 中 简 单 地 用 1 到 6 之 中 的 一 个 数字 代 替 x 然 后 键 入 标 题 文 本 之 后 在 行 尾 加 上 < / H x > 例
< H 1 > T h is is b h e a d in g < / H 1 >
要 记 住 的 另 一 点 是 不 必 在 标 题 尾 部 为 标 题 添 加 诸 如 <P > <B R > 或 <H R > 之类 的 行 结 束 标 记 这 是 因 为 结 束 标 记 < / H x > 自 动 地 添 加 了 所 需 数 量 的 空 白 当 然这 并 不 阻 止 你 加 入 所 需 的 其 它 额 外 空 白
链 接 与 锚 地
链 接 与 锚 地 提 供 了 访 问 一 个 W e b 站 点 的 特 殊 手 段 每 次 访 问 一 个 W e b 站 点时 总 会 看 到 一 些 文 本 加 了 下 划 线 这 时 大 概 就 是 看 到 了 一 个 链 接 一 个 链 接把 当 前 位 置 与 某 个 另 外 的 位 置 相 连 接 事 实 上 大 多 数 W e b 页 使 用 最 常 见 的 链接 形 式 第 一 种 是 创 建 到 另 一 页 的 链 接 用 In te rn e t 术 语 来 说 是 一 个 UR L
这 种 形 式 更 常 见 另 一 种 是 创 建 到 当 前 页 的 另 一 小 节 或 到 另 一 页 的 某 一 指 定 部分 的 链 接 使 用 它 可 以 找 到 一 个 锚 地 一 会 儿 会 讨 论 它 下 面 是 两 种 常 见 的链 接 形 式 的 例 子 注 意 到 它 们 都 在 <A > 标 记 中 使 用 了 HR E F 关 键 字
T h is is a < A H R E F = " h ttp ://w w w .m ic ro s o f t .c o m " > D o c u m e n t< / A > L in k
T h is is a < A H R E F = " h ttp ://w w w .m ic ro s o f t .c o m # M y A n c h o r" > A n c h o r< / A > L in k
注 链 接 将 一 页 与 另 一 页 相 连 接 锚 地 创 建 到 一 页 中 指 定 位 置 的 一 种 连 接
在 这 两 种 情 形 中 标 记 <A > 与 标 记 < / A > 间 出 现 的 文 本 都 是 W e b 站 点 上 加 了下 划 线 的 句 子 的 一 部 分 在 <A > 与 < / A > 之 间 应 该 总 是 要 放 上 某 些 文 本 否 则 你的 链 接 对 于 用 户 是 不 可 见 的 注 意 到 这 两 种 链 接 看 起 来 几 乎 完 全 一 样 但 有 一个 差 别 那 就 是 锚 地 链 接 使 用 # 号 将 UR L 与 锚 地 名 分 割 开 上 例 中 使 用M y A n c hor 作 为 锚 地 名 第 二 种 链 接 首 先 处 理 UR L 然 后 在 向 用 户 显 示 内 容 之前 先 处 理 页 上 指 定 的 锚 地 位 置
技 巧 若 创 建 到 当 前 页 锚 地 的 一 个 锚 地 链 接 则 不 必 提 供 <A> 标 记 中 的 URL 部 分 可 缩 写 为 <A HREF="# Anchor Nam e ">
锚 地 链 接 要 求 在 <A > 标 记 中 指 定 页 的 某 个 地 方 创 建 锚 地 除 非 是 在 当 前 页
找 一 个 指 定 位 置 这 时 不 必 提 供 UR L 例 如 我 们 看 到 了 一 个 到 h ttp : / / www. m ic ros oft. c o m 上 的 M y A n c hor 的 锚 地 链 接 但 是 这 一 位 置 的 锚 地 看 起 来 是 什 么样 的 ?
T h is is th e < A N A M E = " M y A n c h o r" > A n c h o r< A > fo r th is p a g e .
如 你 所 见 锚 地 和 链 接 之 间 的 差 别 是 NA M E 关 键 字 锚 地 总 是 用 NAM E 代 替 HR E F 另 外 大 部 分 浏 览 器 都 不 对 <A > 与 < /A > 之 间 的 文 本 作 高 亮 或 加 下划 线 处 理 这 是 因 为 确 实 不 用 它 们 做 任 何 事
- 2 创 建 一 个 简 单 的 HT ML 文 档
在 前 面 的 小 节 中 我 们 讨 论 了 创 建 HT M L 页 所 用 的 12 种 基 本 标 记 每 个 人都 可 以 按 这 种 方 式 使 用 这 些 标 记 现 在 该 讨 论 一 下 怎 样 在 W e b 站 点 上 使 用这 些 标 记 创 建 一 个 页 了 清 单 8- 1 列 出 了 一 个 简 单 W e b 页 的 源 代 码 显 然 决不 会 在 实 际 应 用 程 序 中 创 建 这 样 简 单 的 一 个 页 这 一 页 的 全 部 目 的 在 于 说明 12 种 标 记 是 如 何 工 作 的
程 序 列 表 8 . 1
<H T M L >
<H E A D >
< T IT L E > S a m p le H T M L P a g e < / T ITL E>
< / H E A D >
< B ODY>
<H 1>T h is is a < E M > L e v e l 1 < / E M > h e a d in g < / H 1 >
N o t ice th at th e " L ev el 1 " p o r t io n o f th e h e a d in g is em p h as iz ed u s in g th e EM ta g .< P >
W e e n d e d th e p re v io u s p a ra g ra p h w i th a < S T R O N G > P < / S T R ONG> ta g . T h is p a ra g ra p h w ill e n d w ith a < S T R O N G > B R < / S T R ONG> ta g . < B R >
N o t ic e h o w we u s e d th e < S T R ONG> S T R ONG< / S T R ONG> ta g to a d d b o ld te x t to th e p re v io us pa ra g ra p h .<H R >
H o r izo n tal ru le s als o h a v e a p la ce on W e b s i te s . Y o u 'l l u se th em m o s t o fte n to p ro v id e s e p a ra tio n s b e tw e e n m a jo r a re a s o f te x t . O f c o u rs e ,
m o s t W e b s i te s are s tartin g to u se f ra m e s b e caus e th ey 'r e m o re f le x ib le .< H R > H e re are th e o th e r f iv e le vels o f h e ad in g s .< P >
< H 2 > L e ve l 2< / H 2>
< H 3 > L e ve l 3< / H 3>
< H 4 > L e ve l 4< / H 4>
< H 5 > L e ve l 5< / H 5>
< H 6 > L e ve l 6< / H 6> < H R >
L e t 's lo ok a t so m e o the r H T M L ta gs .< P >
C lic k < A H R E F = " L IS T S .H T M " > H e re < /A > to d is p la y th e lis t p a g e .< B R >
C lic k < A H R E F = " G R A P H .H T M " > H e re < /A > to d is p la y th e g ra p h ic s p a g e .< B R > C lic k < A H R E F = " T A B L E .H T M " > H e re < /A > to d is p la y a p a g e w ith ta b le s .< B R >
C lic k < A H R E F = " F O R M .H T M " > H e re < / A > to d is p la y a p a g e w ith fo rm s .< B R >
C l ic k < A H R E F = " #M y A nc hor" > H e re < / A > to s e e a n o the r a re a o f th is p a g e .< P> <P> < P>< P > < P>
T h is is a n < A N A M E = " M y A nc hor" > A n c hor< / A > l in k a re a .
< / B ODY>
< / H T M L >
这 些 源 码 初 看 起 来 有 些 唬 人 但 这 里 没 有 任 何 前 面 小 节 中 没 有 讲 到 的 东 西首 先 第 一 个 标 记 < H T M L > 定 义 了 页 的 开 始 在 源 代 码 程 序 列 表 的 末 尾 可 以看 到 它 的 配 对 符 号 < / H T M L > 其 次 我 们 把 文 档 用 <H E A D > 及 < B ODY > 及 其配 对 符 号 将 文 本 分 成 了 两 部 分 唯 一 没 见 过 的 标 记 是 < T ITLE> 它 定 义 了 浏览 器 标 题 栏 中 的 标 题 这 一 标 记 并 不 是 绝 对 必 要 的 但 给 W e b 页 一 个 标 题 很 好使 其 它 人 知 道 它 们 在 看 什 么 另 外 标 题 还 可 以 帮 助 在 自 己 的 页 间 航 行 以 找 到出 问 题 的 部 分
注 <TITLE> 标 记 在 浏 览 器 标 题 栏 中 显 示 你 的 Web 页 的 名 称
页 的 正 文 部 分 以 一 个 1 级 标 题 开 始 接 着 是 加 了 特 殊 属 性 的 一 些 文 本 其后 是 一 条 水 平 标 尺 标 记 在 这 里 还 可 以 看 到 能 表 明 <P> 与 <B R > 标 记 有 什 么 差别 的 一 些 文 字 过 一 会 儿 就 会 看 到 它 们 是 怎 么 一 回 事
程 序 列 表 的 下 一 节 说 明 了 标 题 的 其 它 五 个 级 别 的 差 别 大 多 数 浏 览 器 只 是简 单 地 使 用 不 同 的 字 号 来 改 变 标 题 的 级 别 不 幸 地 是 大 多 数 浏 览 器 没 有 足 够多 的 可 读 的 字 体 大 小 来 对 应 全 部 标 题 级 别 可 能 需 要 避 免 使 用 第 6 级 标 题 因为 它 们 太 小 以 至 于 某 些 人 看 不 清 第 5 级 标 题 已 经 是 相 当 小 了
在 这 个 示 例 的 最 后 一 小 节 含 有 一 些 链 接 现 在 还 不 能 看 到 链 接 上 去 的 页 这 仅 是 后 面 章 节 的 一 个 练 习 但 是 请 看 第 五 个 链 接 可 以 注 意 到 它 是 当 前 页的 一 个 锚 地 正 文 部 分 的 最 后 一 个 工 作 行 包 含 着 这 个 锚 地 一 定 要 花 些 时 间 在你 的 浏 览 器 上 看 一 看 它 们 是 如 何 工 作 的
图 8 .3 H T M L 页的 样本 用 以说明 在 In te rn e t E x plore r 3 .0 中 12 个基 本标 记的 作用
那 么 我 们 的 HT M L 样 页 看 起 来 是 什 么 样 子 呢 ? 图 8 .3 是 使 用 In te rn e t E xp lo re r 3 .0 时 可 以 看 到 的 样 子 如 果 你 使 用 其 它 浏 览 器 就 要 用 些 时 间 对 书 中列 出 的 屏 幕 显 示 与 你 自 己 的 屏 幕 进 行 比 较 了 可 以 发 现 并 不 是 所 有 的 浏 览 器都 是 一 样 的 在 显 示 东 西 时 它 们 会 有 一 些 细 小 的 差 别 机 器 的 差 别 只 能 加 剧显 示 的 差 别 考 虑 到 这 些 都 是 常 见 标 记 想 象 一 下 如 果 使 用 了 某 个 浏 览 器 支 持而 其 它 浏 览 器 不 支 持 的 一 些 更 奇 异 的 标 记 时 会 发 生 什 么 呢 ?!
现 在 到 了 扩 充 我 们 的 HT M L 知 识 的 时 候 了 下 面 几 节 将 要 说 明 一 些 其 他 标记 尽 管 在 这 些 章 节 不 准 备 讨 论 全 部 细 节 但 它 们 提 供 的 足 够 信 息 已 经 可 以使 你 在 访 问 其 它 W e b 站 点 并 查 看 源 码 时 能 看 懂 它 们
使 用 列 表
你 看 到 过 不 包 括 任 何 形 式 的 公 告 式 列 表 或 过 程 程 序 的 技 术 书 籍 吗 ? 把 复 杂的 思 想 用 容 易 理 解 的 语 句 片 段 表 达 出 来 恐 怕 是 作 者 们 能 够 进 行 的 最 基 本 的 任务 之 一 列 表 ─ ─ 是 枚 举 想 法 的 小 段 文 本 — — 是 大 多 数 情 况 下 解 决 问 题 的 答 案考 虑 到 大 多 数 W e b 页 的 大 小 限 制 列 表 就 变 得 更 加 重 要 HT M L 支 持 三 种 不 同形 式 的 列 表
-
无
序 列 表 这 种 列 表 使 用 公 告 牌 形 式 以 <U L> 标 记 开 始 并 以 < / U L > 标 记结 束 在 列 表 中 的 项 以 <L I> 标 记 开 头
-
有
序 列 表 过 程 或 其 它 具 有 编 号 的 文 本 形 式 考 虑 使 用 有 序 列 表 这 种 列 表格 式 使 用 <O L > 和 < / O L > 标 记 和 无 序 列 表 一 样 每 一 项 以 <L I> 标 记 开 头
-
术 语 汇 编 这 种 特 殊 的 列 表 使 用 由 <D L > 和 < / D
L > 标 记 括 起 来 的 两 类 项 元
素 被 定 义 的 项 前 辍 以 <D T > 标 记 而 项 的 定 义 则 前 辍 以 <D D > 标 记
尽 管 只 有 三 种 列 表 形 式 但 就 如 同 其 它 程 序 设 计 方 案 中 一 样 可 以 用 嵌 套方 法 实 现 多 种 功 效 讨 论 页 的 样 本 的 代 码 时 就 会 看 到 列 表 8 .2 中 是 如 何 实 现这 一 点 的 了
注 总 要 对 H T M L 页 加 入 大 量 的 注 释 因 为 可 能 有 不 是 程 序 员 的 人 们 来 不 时地 编 辑 它 们
在 我 们 讨 论 的 三 种 形 式 的 列 表 中 术 语 汇 编 是 最 灵 活 的 它 使 用 的 两 种 类型 的 列 表 元 素 使 显 示 的 文 本 看 起 来 更 美 观 <D T > 项 标 记 和 <D D > 标 记 定义 间 的 差 别 在 于 其 中 之 一 是 被 缩 进 的 可 以 用 这 一 特 色 作 出 与 术 语 汇 编 类型 元 素 显 示 无 关 的 特 殊 功 效 和 本 章 中 讨 论 的 一 些 其 它 特 殊 文 本 标 记 一 样 列表 标 记 <L I> <D T > 和 < DD> 在 行 尾 自 动 插 入 一 个 <B R > 标 记 使 用 <B R > 标记 使 得 文 本 变 成 下 一 行 但 保 持 列 表 仍 在 一 起
现 在 又 该 看 一 下 列 表 代 码 的 例 子 了 程 序 列 表 8 .2 显 示 的 是 程 序 列 表 8 .1 中看 到 的 第 一 页 的 第 一 个 链 接 页 它 包 含 着 三 种 基 本 列 表 形 式 以 及 一 个 说 明 怎样 对 它 们 进 行 嵌 套 的 例 子 请 确 保 将 产 生 的 文 件 命 名 为 L IST S .H T M 这 样 才 能使 链 接 按 所 预 期 地 那 样 工 作 特 别 要 注 意 这 是 第 一 个 使 用 注 释 < !- 文 本 > 标 记 的 页 面
程 序 列 表 8 . 2
<!- 本页目的 是说明如何使 用列表标注 ->
<H T M L >
<H E A D >
< T IT L E > C re a t in g L is ts < / T ITLE >
< / H E A D >
< B ODY>
< H 2 > T h ere a re th ree d iffe ren t k in d s o f L is ts :< / H 2 >
<!- 显示无序 列表 ->
< H 3 > U no rde re d< / H 3>
<U L >
< L I> Ite m 1
< L I> Ite m 2
< / U L >< H R >
<!- 显示有序 列表 ->
< H 3 > O rde re d< / H 3>
<O L >
< L I> Ite m 1
< L I> Ite m 2
< / O L > < H R >
<!- 显示说明 两种列表元素 类型的术语汇 编列表 ->
<H 3>G lo s s a ry < / H 3 >
<D L >
< D T> A Te rm
< D D > th is is th e d e f in itio n fo r it.
< D T> A n o th e r Te rm
< D D > Y e t a no th e r d e f in itio n.
< / D L >< H R >
<!- 显示的是 嵌套列表的一 种方法 ->
< H 3 > N e s te d L is t< /H3 >
<O L >
< L I> Ite m 1
< U L >
< L I > S u b i te m 1
< L I > S u b i te m 2
< / U L >
< L I> Ite m 2
< / O L >
< / B ODY>
< / H T M L >
注 尽 管 有 其 它 方 式 创 建 注 释 但 通 常 习 惯 于 用 < ! 文 本 > 标 记
你 已 很 好 地 了 解 了 怎 样 对 各 种 列 表 标 记 写 出 代 码 了 现 在 就 能 够 看 到 这 一
页 的 样 子 了 图 8 .4 显 示 的 是 怎 样 使 用 列 表 的 一 个 典 型 例 子 请 注 意 三 种 列表 形 式 都 没 有 怎 么 进 行 修 饰 但 它 们 却 都 正 常 有 效
图 8 .4 列表 标记 容 易地在 W e b 页中 枚举 指定 要点 或提 供术 语汇编 类型 的元素
添 加 图 形
图 形 确 实 可 以 对 文 本 页 进 行 乔 装 打 扮 我 们 大 多 数 人 都 会 同 意 这 样 的 说 法如 果 作 者 在 技 术 手 册 中 添 加 了 足 够 多 的 正 确 的 图 形 图 像 理 解 起 来 就 会 容 易 得多 也 可 以 向 W e b 页 中 加 入 图 形 然 而 添 加 的 方 式 上 却 有 一 些 限 制
技 巧 一 些 人 过 分 热 衷 于 向 它 们 的 W e b 站 点 添 加 图 形 导 致 了 大 多 数 人 甚至 不 能 看 到 这 些 图 形 的 大 部 分 当 用 户 在 下 载 图 形 时 如 果 用 了 一 分钟 还 不 能 完 成 下 载 他 们 就 会 按 下 浏 览 器 的 Stop 停 止 按 钮 事实 上 一 个 良 好 的 估 算 是 使 Web 页 的 大 小 包 括 图 形 和 ActiveX 控件 保 持 在 60KB 以 下
你 要 面 对 的 最 大 限 制 之 一 是 能 够 显 示 的 图 形 种 类 许 多 浏 览 器 只 处 理 G IF
又 称 为 C o m puS e rv e 格 式 和 JP JP G 图 像 这 两 种 格 式 ─ ─ 它 们 是 由 HT M L 支 持 的 你 的 浏 览 器 上 显 示 的 其 它 类 型 的 图 像 都 是 使 用 了 插 件 的 结 果 N e ts c a p e 和 In te rn e t E x p lo re r 都 支 持 各 种 插 件 例 如 更 流 行 的 插 件 之 一 允 许 用 浏 览 器 观看 AVI 电 影 文 件 W e b 页 设 计 者 的 问 题 是 不 能 指 望 别 人 都 拥 有 这 些 插 件
于 是 如 果 计 划 创 建 一 个 受 欢 迎 的 In te rn e t 站 点 那 么 大 概 就 要 坚 持 使 用 G IF
和 JP E G 图 像 了
注 使 用 G I F 和 J P G 图 像 可 以 获 得 最 大 的 兼 容 性 而 在 知 道 了 用 户 使 用 什么 浏 览 器 时 使 用 其 它 图 像 类 型 则 可 以 获 得 最 大 的 美 观 效 果
显 示 图 形 图 像 是 相 当 容 易 的 必 须 做 的 全 部 工 作 就 是 使 用 < IM G > 标 记 这一 标 记 使 用 SR C 属 性 来 接 受 一 个 文 件 名 例 如
< IM G S RC= " F ig u re 1 . G if" >
把 图 形 放 入 一 个 页 面 就 不 像 你 想 像 的 那 么 容 易 了 像 文 本 情 况 时 一 样 由于 不 能 定 义 它 们 的 确 切 位 置 除 了 使 用 框 架 (fra m e ) 或 表 格 之 外 没 有 多 少 办 法来 预 先 确 定 图 形 的 位 置 通 过 使 用 诸 如 在 前 一 小 节 中 看 到 的 列 表 标 记 技 巧 文本 通 常 提 供 了 某 些 灵 活 性 而 图 形 却 不 提 供 这 样 的 灵 活 性 如 果 你 设 计 中 的 W e b 页 非 常 复 杂 那 么 大 概 一 直 要 使 用 框 架 (fra m e ) 来 获 取 大 部 分 浏 览 器 的 正 确 响 应了
Web 链 接 Microsoft Netscape 和 其 它 供 货 商 正 在 制 定 称 之 为 层 叠 式 电 子表 格 CSS 的 HTML 新 标 准 事 实 上 Internet E xplorer 4.x 已 部分 地 支 持 CSS C S S 的 一 个 目 的 是 提 供 前 后 连 贯 的 方 法 从 而 不 用 做大 量 格 式 化 工 作 就 可 以 显 示 数 据 另一个 目的 是 使诸如 图形这 样的 屏幕元素 的定位更容 易 如 果 想 找 到 Internet Explorer3. x 支持的 CSS 的具体信息 写本书时 Internet Explorer 4. x 的 Web 站点还没有更新 那 么 请 查 看 http://www.shadow.net/%7Ebraden/nostyle/ 可 以 在ht tp :// ww w.w 3. org /p ub/ WW W/S ty le/ CS S/ 找 到规范本身 Mi cr oso ft 在http://www .microsoft.com/turet ype/css/gallery/entr ance.htm 也 有 一 个 C S S 展 台 这 一 特 定 的 站 点 不 能 用 Netscape C ommunicator 访 问 因 为 到 写 本 书 时 它 还 不 支 持 C S S 这 一 产 品 也 支 持 称 之 为Javascript Style Sheets 的 竞 争 标 准
使 用 < IM G > 标 记 能 够 定 义 文 本 和 图 形 混 合 显 示 的 方 式 所 要 做 的 一 切 工 作
就 是 加 入 AL IG N 属 性 有 三 种 方 式 对 齐 文 本
-
AL IGN= T O P
-
AL IGN= M IDDL E
-
AL IGN= B O T T OM
注 当 图 形 与 文 本 相 邻 显 示 时 ALIGN 属 性 允 许 你 改 变 文 本 的 显 示 位 置
让 我 们 看 一 下 向 某 个 W e b 站 点 加 入 图 形 的 简 单 代 码 在 使 用 窗 体 (F O R M ) 一 节 中 我 们 将 更 深 入 地 考 察 图 形 的 定 位 问 题 程 序 列 表 8 .3 中 的 代 码 显 示 了图 形 图 像 并 说 明 怎 样 使 用 AL IG N 属 性 这 一 程 序 列 表 使 用 了 我 作 的 一 个 G IF 你 可 以 用 手 边 的 任 何 G IF 文 件 代 替 它 这 种 方 法 对 于 显 示 公 司 形 象 标 志 或 在一 个 页 上 显 示 其 它 简 单 图 形 是 适 用 的 图 8 .5 则 显 示 这 些 代 码 显 示 出 的 图 像
程 序 列 表 8 . 3
<H T M L >
<H E A D >
< T IT L E > U s in g G ra p h ic s < / T ITL E>
< / H E A D >
< B ODY>
< H 2 > Y ou c a n a l ign te xt a n d gra p h ic s in on e of th re e w a y s .< / H 2>
< H 3 > T o p< / H 3>
< IM G S R C = " C o lo r B lk . G if" , A L IGN= T O P > T h is is a t th e T O P .< / HR >
<H 3>M id d le < / H 3 >
< IM G S R C = " C o lo r B lk . G if" , A L IGN= M IDDL E > T h is is in th e M IDDL E .< / HR >
< H 3 > B o tto m < /H 3 >
< IM G S R C = " C o lo r B lk . G if" ,A L IG N = B O T T O M > T h is is in th e B O T T O M .< /H R >
< / B ODY>
< / H T M L >
图 8 .5 添加 简单 图形 是相当 容易 的
Web 链 接 你 可 能 已 经 注 意 到 某 些 人 用 图 形 而 不 是 用 文 本 来 创 建 链 接 详见 本 章 前 面 一 节 链 接 及 锚 地 这 种 技 术 称 之 为 映 射 如 果 没 有实 用 程 序 的 帮 助 在 Web 页 中 使 用 映 射 很 快 就 会 糊 涂 起 来 在http://www ,ecaeta.ohio-state.e du/tc/mt/ 上 可 以 找 到 一 个 称 为Map This 的 非 常 出 色 的 共 享 实 用 程 序 可 以 帮 助 你 创 建 图 形 映 射
由 于 这 个 站 点 十 分 繁 忙 也 许 会 碰 上 麻 烦 但 坚 持 试 下 去 因 为 这个 实 用 程 序 非 常 值 得 去 努 力 得 到 它
创 建 表 格
表 格 化 数 据 差 不 多 总 是 所 有 商 务 展 示 的 一 部 分 电 子 表 格 帐 页
sp re a d sh e e ts 仅 仅 是 会 计 师 分 类 帐 帐 页 在 计 算 机 中 实 现 的 一 个 例 子 在 HT M L 页 上 创 建 表 格 是 有 意 义 的 但 是 需 要 有 一 整 套 标 记 来 完 成 这 项 工 作 这 里 列 出了 所 有 必 须 的 制 表 标 记
标记 |
说明 |
---|---|
<T A B L E > 和 < / TA B L E> |
这两个标 记定义表格的 头和尾 |
<T R > 和 < / T R > |
用 这 两 个 标 记 定 义 每 个 行 正 规 步 骤 是 先 定 义 行 再 定义列 |
<T D > 和 < / T D > |
每一个数 据元素 或称 做列 都用这 一对标记括起 来 |
< C AP T ION> 和 < / C A P T ION> |
这些标记 定义表格的标 题 |
<T H > 和 < / T H > |
使用这一 对标记创建表 格中每个行或 每个列的标题 |
技 巧 <TABLE> 标 记 有 一 个 特 殊 的 BORDER 属 性 允 许 你 用 线 条 把 表 格 围 起来 缺 省 的 边 界 线 条 值 是 宽 度 1 也 可 以 根 据 浏 览 器 设 置 为 1 到
6 之 间 的 任 一 个 数 字
我 们 来 看 一 份 简 单 的 代 码 它 定 义 了 两 种 不 同 的 表 格 程 序 列 表 8 .4 说 明了 怎 样 使 用 本 节 谈 到 的 那 些 简 单 标 记 来 实 现 两 种 不 同 的 效 果 第 一 个 表 格 包 含的 是 简 单 文 字 元 素 而 第 二 个 则 以 复 杂 的 方 式 混 合 了 文 字 和 图 形
技 巧 可 用 <CENTER> 和 </CENTER> 这 对 标 记 对 表 格 中 的 文 本 进 行 居 中 处 理 这 一 对 标 记 对 放 入 文 档 的 任 何 文 本 都 可 以 起 作 用 而 且 它 们 对 图 形 也起 作 用 请 参 考 程 序 列 表 8 . 4
程 序 列 表 8 . 4
<H T M L >
<H E A D >
<T IT L E >C re a t in g T a b le s < / T IT L E >
< / H E A D >
< B ODY>
<!- 创建简单 的文本表格 ->
< H 3 T a b le s a re a n im po rta nt p a r t of W e b pa g e s .< / H 3 >
< C AP T ION> A S im p le T e x t T a b le < / C A P T IO N>
< T A B L E BO RD E R >
< T R >
< T H > < / T H >
< T H> C o lu mn A< / T H>
< T H > C o lu m n B < / T H >
< T H > C o lu m n C < / T H >
< / T R >
< T R >
< T H > R o w 1 < / T H >
< T D > E n tr y A 1 < / T D >
< T D > E n tr y B 1 < / T D >
< T D > E n tr y C 1 < / T D >
< / T R >
< T R >
< T H > R o w 2 < / T H >
< T D > E n tr y A 2 < / T D >
< T D > E n tr y B 2 < / T D >
< T D > E n tr y C 2 < / T D >
< / T R >
< T R >
< T H > R o w 3 < / T H >
< T D > E n tr y A 3 < / T D >
< T D > E n tr y B 3 < / T D >
< T D > E n tr y C 3 < / T D >
< / T R >
< / TA B L E> < H R >
<!- 创建图文 混合的复杂表 格 >
< H 3 > Y o u a re n 't L im ite d to te x t in a ta b le .< / H 3 >
< T AB L E B O DE R = 3 >
< T R >
<T D > < IM G S R C = " C o lo r B lk .G if" >< / T D >
< T D> < IM G S R C = " C o lo r B lk .G if" AL IG N= M IDDL E > T e x t a n d G ra p h ic s .< / T D>
< T D> T e x t A lo n e < / T D>
< / T R >
< T R >
< T D > S o m e m o re te x t . < / T D >
< T D > < C E N T E R > < IM G S R C = " C o lor B lk .G if" > < / C E N T E R > < / T D >
< T D > S o m e m o re te x t . < / T D >
< / T R >
< T R >
<T D > < IM G S R C = " C o lo r B lk .G if" >< / T D >
< T D > < C E N T E R > S o m e m o re te x t .< /C EN TE R > < / TD >
<T D > < IM G S R C = " C o lo r B lk .G if" > < / T D >
< / T R >
< / TA B L E>
< / B ODY>
< / H T M L >
注 用 缩 进 格 式 写 代 码 可 以 使 表 格 中 的 行 和 列 分 开 而 且 容 易 看 清
这 些 代 码 看 起 来 真 不 少 手 工 写 起 来 令 人 发 烦 类 似 于 这 样 的 代 码 从 另 一角 度 说 明 如 果 计 划 写 出 大 量 HT M L 页 面 代 码 的 话 就 应 该 多 用 些 精 力 让 GUI 前端 工 具 来 帮 你 的 忙 图 8 .6 是 在 浏 览 器 看 到 的 屏 幕 显 示 上 述 代 码 还 说 明 了一 个 要 遵 守 的 基 本 规 则 工 作 时 总 是 先 行 后 列 如 果 遵 守 这 一 简 单 规 则 在 制表 时 就 不 会 遇 到 什 么 麻 烦 注 意 到 第 二 个 表 格 是 图 文 混 合 的 尽 管 表 格 看 起 来有 些 复 杂 但 先 行 后 列 的 同 一 原 则 仍 然 成 立 请 注 意 第 一 个 表 格 使 用 的 1 宽度 边 界 与 第 二 个 表 使 用 的 3 宽 度 边 界 有 所 差 别 3 宽 度 边 界 占 用 更 多 的 空 间 但 也 更 引 人 注 目
图 8 .6 表格 容易 实现 先指 定行 再 指定列
第 一 个 表 格 中 行 和 列 中 都 使 用 了 <T H > 标 准 文 本 和 表 头 文 本 有 两 个 主 要 差别 第 一 标 准 文 本 通 常 是 左 对 齐 的 而 表 头 文 本 则 是 居 中 的 可 像 以 程 序 列表 8 .4 中 那 样 用 < C EN TER > 来 改 变 它 们 的 行 为 第 二 表 头 文 本 使 用 粗 体 字
注 用 <CENTER> 可 以 对 Web 页 上 任 意 位 置 的 文 本 包 括 表 格 和 窗 体 中 的 文本 进 行 居 中 处 理
使 用 窗 体
我 们 要 讨 论 的 最 后 一 段 基 本 的 HT M L 代 码 是 窗 体 窗 体 有 多 种 用 途 ─ ─ 大部 分 都 是 和 数 据 项 En tr y 打 交 道 而 不 是 用 于 数 据 传 播 d is s e m in a t ion) 到 目
前 为 止 |
我 们 所 看 到 的 全 部 技 术 中 |
在 使 用 标 准 的 HT M L 向 W e b | 站 点 添 加 类 |
---|---|---|---|
似 于 单 选 |
按 钮 和 复 选 框 之 类 的 项 时 |
窗 体 提 供 了 唯 一 的 方 法 因 为 | A c tiv e X 将 |
从 根 本 上 大 量 地 代 替 了 使 用 窗 体 的 需 求 尽 管 了 解 窗 体 是 使 用 A c tiv e X 的 另 一种 选 择 是 重 要 的 但 我 们 在 这 里 并 不 打 算 介 绍 使 用 窗 体 的 所 有 难 以 预 测 的 变 化
每 个 窗 体 都 以 <FO R M > 标 记 开 头 除 了 标 记 本 身 还 必 须 包 括 进 两 个 属 性
M E T HOD 和 AC T IO N M E T HOD 属 性 定 义 了 你 打 算 怎 样 处 理 窗 体 收 集 数 据 的
方 式 |
这 有 两 种 标 准 的 方 法 PO ST 和 GE T |
PO ST 方 法 更 多 地 用 于 数 据 项 |
En try |
---|---|---|---|
窗 体 |
它 允 许 你 从 客 户 机 向 主 机 发 送 数 据 |
GE T 方 法 用 于 数 据 查 询 窗 体 |
例 如 |
当 你 要 到 你 喜 爱 的 W e b 搜 索 页 时 实 际 上 你 就 是 要 填 一 份 使 用 GE T 方 法 的 窗体 AC T ION 属 性 则 让 W e b 服 务 器 知 道 到 哪 里 去 找 一 个 CG I 脚 本 用 它 处 理来 自 窗 体 的 输 入 一 个 典 型 的 <FO R M > 标 记 如 下
< F O R M M E TH O D = G ET A C T IO N = " /c g i - b in / q u e r y " >
创 建 一 个 窗 体 使 用 的 主 要 标 记 是 < INP UT > 标 记 有 许 多 方 式 ─ ─ 多 于 这 里介 绍 的 — — 使 用 这 一 特 定 的 标 记 除 了 在 这 里 可 以 找 到 的 基 本 信 息 外 浏 览 器供 货 商 通 常 对 < INP UT > 标 记 进 行 增 强 使 之 提 供 附 加 功 能 例 如 你 或 许 会 发现 某 个 浏 览 器 比 另 一 个 浏 览 器 支 持 更 多 种 类 的 按 钮 了 解 了 这 些 后 让 我 们 快速 地 看 一 下 这 一 标 记 使 用 的 各 种 属 性 吧
TY P E 这 一 属 性 定 义 控 件 的 类 型 ─ ─ 按 钮 文 本 框 等 等
VAL U E 这 一 属 性 的 效 果 取 决 于 控 件 的 类 型 例 如 它 定 义 按 钮 的 标 题 或 文本 框 的 内 容
NA M E 这 一 属 性 指 定 引 用 该 控 件 的 变 量 名 称
SIZ E 这 一 属 性 定 义 控 件 的 大 小 ─ ─ 通 常 是 按 字 符 计 算 的 宽 度
CH E CKE D 具 有 选 中 或 未 选 中 两 种 状 态 的 单 选 按 钮 或 其 它 控 件 使 用 这 个 属性
RO W S 这 一 属 性 定 义 了 为 一 个 特 定 控 件 分 配 的 行 数 ─ ─ 通 常 是 控 件 的 高度
除 了 < INP UT > 标 记 还 可 以 使 用 < S ELEC T> 标 记 创 建 弹 出 式 列 表 框 或 菜 单它 工 作 的 方 式 与 本 章 前 面 创 建 的 列 表 相 同 要 用 < / S ELEC T> 标 记 结 束 列 表 框
在 < S E LEC T> 和 < / S ELEC T> 标 记 之 间 使 用 <O PT IO N > 或 <O PT IO N SE L E C T E D >
标 记 为 弹 出 式 列 表 框 创 建 一 系 列 表 项 en tr ie s < O P T IO N S ELEC TE D > 标 记指 示 出 当 用 户 最 初 看 到 这 一 页 时 你 想 选 择 哪 一 个 选 项
最 后 的 窗 体 专 用 标 记 允 许 创 建 一 个 文 本 区 这 允 许 你 在 一 个 小 区 中 显 示 大量 文 本 或 为 用 户 的 注 释 及 评 论 提 供 一 个 大 显 示 区 文 本 区 使 用 < T EX TA R E A >
和 < / TEX T A R E A > 标 记 对 也 能 够 为 < T EX TA R E A > 标 记 添 加 一 个 可 选 的 属 性
NAM E , 以 便 于 后 面 恢 复 其 内 容
现 在 你 已 经 基 本 了 解 了 这 些 标 记 是 如 何 工 作 了 让 我 们 来 看 看 实 际 代 码 程 序 列 表 8 .5 列 出 了 一 个 窗 体 的 代 码 示 例 将 产 生 的 文 件 命 名 为 FO R M .H T M 以 使 程 序 列 表 8 .1 中 的 链 接 正 确 工 作 它 对 能 够 使 用 的 每 种 类 型 的 基 本 控 件都 给 出 了 例 子 还 有 一 个 在 本 节 末 尾 要 更 详 细 讨 论 的 扩 充 控 件 图 8 .7 则 显 示的 是 从 In te rn e t E x p lo re r 上 看 到 的 这 一 页 的 外 观 如 果 使 用 不 同 的 浏 览 器 你 的视 图 也 许 会 稍 有 不 同 注 意 在 页 底 部 的 三 个 按 钮 使 用 了 < C EN TER > 标 记 进行 居 中 处 理
图 8 .7 窗体 使你 从浏 览者那 里得 到反 馈
程 序 列 表 8 . 5
<!- 这是一个 非常简单的但 非功能性窗体 它不是说明 怎样写出通常 ->
<!- |
需要的 CG I |
脚本使窗 体可以使用 为了看到完整 的窗体的实现 -> |
---|---|---|
<!- |
请看类似 于 |
h t tp : / / www - m s n .ly c o s .c o m 的 W e b 站点 -> |
<H T M L >
<H E A D >
<T IT L E >N e w Pa g e < T IT L E >
< / H E A D >
< B ODY>
< H 2 > T h is is o u r s a m p le fo rm .< /H 2 >
<!- 使用标准 控件 创建一 个简单的窗体 ->
< F OR M M E T H O D = G E T AC T ION= " / c g i- b in / q u e ry " >
<!- 创建一个 文本字段 ->
< S T R ONG> T h is is a te x t f ie ld :< / S T R O N G >
< IN P U T TY P E = " te x t" V A L U E = " S o m e Te x t" N A M E= " T e x t 1 " S IZE= 2 0 > < P >
<!- 添加一些 单选按钮 ->
< S T R ONG> T h e s e a re s o m e ra d io b u t to n s .< / S T R ONG> < P >
< INP U T T Y P E = " ra d io " NAM E = " R a d io 1 " VAL UE = " B u t to n 1 " C H E C KE D> B u t to n 1 < B R >
< IN P U T T Y P E = " ra d io" N A M E = " R a d io 1 " V A L U E = " B u t to n 2" > B u t to n 2< B R >
< IN P U T T Y P E = " ra d io" N A M E = " R a d io 1 " V A L U E = " B u t to n 3" > B u t to n 3< P >
<!- 添加一些 复选框 ->
< S T R ONG> T h e s e a re s o m e c h e c k b o x e s .< / S T R O N G > < P >
< IN P U T T Y P E = " c h e c k b o x " N A M E = " C h e c kb ox 1" V A L U E = " C h e c k 1 " > C he c k bo x 1< B R >
< IN P U T T Y P E = " c h e c k b o x " N A M E = " C h e c kb ox 2" V A L U E = " C h e c k 2 " > C he c k bo x 2< B R >
< IN P U T T Y P E = " c h e c k b o x " N A M E = " C h e c kb ox 3" V A L U E = " C h e c k 3 " > C he c k bo x 3< P >
<!- 弹出式列 表和菜单需要 不同的格式 ->
< S T R ONG> H e re 's a p o p u p l is t :< / S T R ONG>
< S E LEC T N A M E= " P o p u p 1 " >
< O P T ION>
Ite m O n e
< O P T IO N S E LEC TE D >
Ite m T w o
< O P T ION>
Ite m T h re e
< / S E LEC T >
<P>
<!- 还能够在 屏幕上创建文 本区 ->
< S T R ONG> A d d in g te x t a re a s is e a s y u s in g th e T E XT AR E A ta g .< / S T R ONG > < P >
< T E X T A R E A R O W S = 3 NAM E = " T e x t A re a 1 " >
T h is is s o m e te x t th a t g o t a d d e d to th e d is p la y to s h o w th e e f fe c t o f
th e T E X T A R E A ta g . Y o u 'll f in d it q u ite h a n d y a s y o u c re a te W e b p a g e s w ith a lo t o f in fo rm a tio n to c o n v e y . I t 's v e ry im p o r ta n t to p ro v id e th e
u s e rs o f y o u r s ite w ith c o m p le te in fo rm a tio n , a n d th is ta g h e lp s y o u d o i t .< / TEX TA R E A > < P > < P >
<!- 每个窗体 都需要一个提 交按钮向服务 器发送数据 ->
< C EN TE R >
< IN P U T T Y P E = s u b m it V A L U E = " S u b m it" >
<!- 这一个可 选的复位按钮 能节省用户的 时间 ->
< INP U T T Y P E = re s e t VAL UE = " R e s e t" >
<!- 这是一个 标准的按钮类 型 我们用它 来取消窗体 ->
< INP U T T Y P E = b u t to n VAL UE = " C a n c e l" >
< / C E N T E R >
< / FO R M >
< / B ODY>
< / H T M L >
如 你 所 见 显 示 的 大 多 数 控 件 使 用 了 < IN P U T > 标 记 控 件 类 型 间 的 主 要 差别 由 TY P E 属 性 定 义 若 想 知 道 它 们 如 何 工 作 可 以 选 择 任 一 控 件 不 能 正 确工 作 的 唯 一 按 钮 是 提 交 S ubm i t 按 钮 这 是 因 为 我 们 还 没 有 写 出 CG I 脚 本 来处 理 窗 体 的 信 息 取 消 按 钮 还 不 能 用 但 过 一 会 儿 我 们 就 定 义 它
在 源 代 码 中 还 应 注 意 到 两 个 独 特 的 按 钮 类 型 提 交 S ubm it 与 复 位 R e s e t 提 交 按 钮 总 是 执 行 <FO R M > 标 记 中 AC T IO N 属 性 指 出 的 动 作 若打 算 用 标 准 方 法 处 理 窗 体 中 的 信 息 就 必 须 提 供 一 个 提 交 按 钮 复 位 按 钮 总 是
将 窗 体 中 的 全 部 控 件 恢 复 成 初 始 状 态 这 使 得 用 户 可 以 从 头 开 始 重 新 启 动 窗 体而 不 必 先 离 开 该 站 点 再 重 新 进 入 该 站 点
这 个 例 子 中 的 取 消 按 钮 还 不 能 用 可 以 单 击 它 但 什 么 也 不 发 生 取 消 按钮 代 表 了 HT M L 文 档 的 标 准 按 钮 类 型 为 使 其 工 作 不 得 不 添 加 一 个 调 用 某 个脚 本 或 执 行 某 个 其 它 动 作 的 ONC L IC K 参 数 一 旦 创 建 了 这 个 按 钮 本 身 A c tiv e X C on tro l P a d 就 提 供 一 种 容 易 的 办 法 让 你 创 建 这 一 脚 本 下 列 程 序 说 明 了 为 一 个按 钮 或 其 它 控 件 指 定 几 乎 任 何 缺 省 动 作 的 快 速 方 法
注 释 可 以 从 http://www .microsoft.com/works hop/author/cpad/ 的Microsoft Web 站 点 为 自 己 下 载 一 个 ActiveX co ntrol Pad
- 一
旦 在 你 的 机 器 上 安 装 了 A c tiv e X C o n tro l P a d 使 用 F ile 文 件 |O p e n 打
开 命 令 打 开 FO R M .H T M 文 件 该 文 件 代 码 如 程 序 列 表 8 .5 所 示
- 使
用 T oo ls 工 具 |S crip t W iza rd 脚 本 向 导 命 令 显 示 脚 本 向 导 对 话 框 如图 8 .8 所 示 看 到 的 是 三 个 列 表 框 及 一 些 按 钮 第 一 个 列 表 框 包 含 了 你 定 义 的控 件 第 二 个 则 包 含 了 你 可 以 与 这 些 控 件 的 事 件 相 联 系 的 动 作 第 三 个 包 括 的是 当 前 赋 给 一 个 特 定 事 件 的 动 作
图 8 .8 脚本 向导 显示 出你的 控件 列表 和与控 件相 联系的 动作
- 单
击 第 一 个 列 表 框 中 C a n c e l 取 消 元 素 左 边 的 加 号 再 单 击 onC lic k 事 件
这 就 是 让 脚 本 向 导 知 道 你 想 为 C a n c e l 按 钮 的 onC lic k 事 件 单 击 事 件 定 义 某个 动 作 了
4 . 单 击 第 二 个 列 表 框 中 的 Go T o P a g e 到 ......页 项 这 表 示 当 你 单 击 窗体 中 的 C a n c e l 取 消 按 钮 时 你 将 到 另 一 页 去 这 时 你 将 到 我 们 例 中 W e b 站点 的 前 一 页 去
5. 单 击 In s e rt A c tio n 插 入 动 作 按 钮 则 看 到 如 下 所 示 的 Go T o P a g e 对话 框 在 这 里 可 以 告 诉 脚 本 向 导 你 想 到 哪 一 页 去
-
. 在 En te r a Te x t S tr in g 键 入 字 符 串
域 中 键 入 你 的 W e b 站 点 某 页 名 称 本 例 中 是 S M P L _ T AG .HT M 请 注 意 不 必 有 双 引 号 或 单 引 号 ─ ─ 脚 本 向 导 自 动地 处 理 这 些 事
-
.
单 击 OK 就 可 以 看 到 C a n c e l 按 钮 的 onC lic k 事 件 与 一 个 动 作 联 系 起 来如 图 8 .9 所 示 将 这 一 文 档 存 盘 然 后 用 浏 览 器 查 看 该 页 单 击 C a n c e l 按 钮将 回 到 前 一 页 去
脚 本 向 导 自 动 地 对 你 的 代 码 作 了 所 需 的 变 化 在 这 时 它 向 程 序 列 表 8 .5 中我 们 定 义 的 取 消 按 钮 添 加 了 一 个 ONC L IC K 属 性 代 码 如 下
< !
- 这是标准 的按钮类型 我们将用它取 消窗体 ->
< IN P UT L ANGUA GE = " VB S c r ip t" T Y P E = b u t to n VAL UE = " C a n c e l" O N C L IC K = " W indow .lo c a t ion .h re f 'S M P L _ T A G . H T M '" >
图 8 .9 脚本 向导 通过 在第三 个列 表框 中显示 事件 及其相 联系 的动 作完成 你所 创建 的脚本
- 3 Ac ti ve X 适 用 的 场 合
差 不 多 整 整 一 章 用 于 讨 论 在 任 何 浏 览 器 上 都 可 以 使 用 的 编 码 技 术 这 些 技术 对 于 使 用 A c tiv e X 进 行 工 作 的 V is u a l C
-
- 开 发 人 员 同 样 重 要 因 为 想 为 W e b 站 点 的 每 个 方 面 都 写 出 控 件 是 不 可 能 的 即 便 确 实 写 出 了 所 需 的 控 件 也 不 可能 每 个 人 都 乐 意 等 待 着 将 它 们 全 部 下 载 到 目 前 为 止 我 们 讨 论 的 编 码 技 术 都 是很 通 用 的 不 仅 它 们 差 不 多 可 以 在 每 个 可 用 的 浏 览 器 上 工 作 而 且 它 们 还 是 与平 台 无 关 的 但 A c tiv e X 却 不 提 供 同 一 级 别 的 支 持 暂 时 它 还 是 非 常 紧 密 地 绑在 In te rn e t E x p lo re r 或 带 适 当 插 件 的 N e ts c a pe N a v iga to r 上
你 可 以 把 现 在 已 学 到 的 知 识 作 为 使 用 A c tiv e X 控 件 进 行 工 作 的 基 础 和 前面 的 几 节 中 添 加 其 它 的 控 件 一 样 向 HT M L 文 档 添 加 一 个 A c tiv e X 控 件 也 需要 一 个 标 记 这 个 标 记 就 是 <O B J E C T > 让 我 们 来 看 一 个 基 本 的 < O B J EC T> 标 记程 序 列 表 8 .6 中 含 有 一 个 用 A c tiv e X C o n tro l P a d 创 建 的 <O B J E C T > 标 记 的 典 型例 子 但 你 可 以 同 样 容 易 地 手 工 创 建 它 这 个 标 记 设 置 成 使 用 第 10 章 以M F C 为 基 础 的 一 个 基 本 按 钮 编 程 例 子 一 节 中 创 建 的 控 件 进 行 工 作 而 且 还需 要 改 变 C ODE B A S E 特 性 使 之 指 向 你 的 W e b 站 点 我 们 将 在 以 后 的 段 落 中更 多 地 讨 论 A c tiv e X 特 性
程 序 列 表 8 . 6
<H T M L >
<H E A D >
< T IT L E > T h is P a g e C o n ta in s a n A c t iv e X C o n tro l < / T ITLE>
< / H E A D >
< B ODY>
< O B J E C T ID = " OC XE XM P L 1 " W ID T H= 7 5 HE IGHT = 2 5
C L A S S ID = " C L S ID : D 8D 7 7 E 0 3 - 7 12A - 1 1C F - 8C 7 0 - 00 0 06E 3 1 2 7 B 7 " C O D E B A S E = " h t tp ://A U X / C O N T R O L S /O C X E X M P L .O C X " >
< P AR AM N A M E = " _ V e r s io n " V A L U E = " 6 5 5 3 6 " >
< P AR AM N A M E = " _ E x te n t X " VAL UE = " 1 9 7 6 " >
< P AR AM N A M E = " _ E x te n t Y " VAL UE = " 6 7 0 " >
< P AR AM N A M E = " _ S to c k P ro p s" VAL UE = " 7 0 " >
< P A R A M N A M E = " _ C a p t ion" V A L U E = " O n" >
< P AR AM N A M E = " _ O n O f f" VAL UE = " - 1 " >
< P A R A M N A M E = " _ M o d a lR e su lt" V A L U E = " 8 " >
I f y ou s e e th is m e s s a g e w i th out a c o r re spo nd in g pu sh b u t ton, th e n y o u r b row s e r d o e s n 't s u p p o r t A c tiv e X c o n p o n e n ts . 如果看 到这条消息而 没有对应的按 钮
那么 你 的浏览器不支 持 A c tiv e X 组件
< / O B J E C T >
< / B ODY>
< / H T M L >
注 和 其 它 的 复 杂 标 记 一 样 <OBJECT> 是 定 义 的 开 始 而 </OBJECT> 是 定 义的 结 束
先 看 <O B J E C T > 标 记 的 第 一 行 ID 属 性 指 出 我 们 正 在 处 理 哪 一 种 控 件 我们 注 意 在 这 里 并 没 写 出 扩 展 名 In te rn e t E xp lore r 缺 省 扩 展 名 是 OC X In te rn e t E xp lo re r 目 前 支 持 三 种 扩 展 名 OC X CA B 和 IN F 我 们 在 本 节 后 边 将 讨 论 各种 类 型 的 优 缺 点 还 可 以 指 定 一 个 UR L 做 为 ID 属 性 串 的 一 部 分 请 注 意 第一 行 中 还 包 含 着 W ID T H 和 HE IGHT 属 性 用 它 们 来 定 义 控 件 的 大 小
注 <OBJECT> 标 记 能 识 别 O C X C A B 和 I N F 这 三 种 文 件 扩 展 名
和 本 地 机 器 中 每 个 A c tiv e X 控 件 一 样 从 In te rn e t 下 载 的 A c tiv e X 控 件 也 具备 C L A SS ID 属 性 这 是 W in dow s 识 别 一 个 特 定 控 件 的 唯 一 编 号 该 编 号 存 贮在 W ind ow s 注 册 表 中 在 后 面 将 会 看 到 如 果 你 使 用 的 控 件 在 用 户 的 机 器 中 已经 安 装 这 时 这 一 特 色 就 能 帮 助 减 少 控 件 的 下 载 时 间
添 加 C ODE B A S E 属 性 的 作 用 是 如 果 主 机 上 还 没 安 装 该 控 件 的 话 就 指 示到 你 的 因 特 网 站 点 的 某 处 去 找 到 这 个 控 件 如 同 已 在 AUT OE XE C . B A T 已 放 入的 远 程 PA T H 语 句 那 样 把 它 也 想 像 成 一 个 远 程 PA T H 如 果 不 向 < O B J EC T> 标 记 添 加 C ODE B A S E 属 性 那 么 就 不 能 有 效 地 使 别 人 从 你 的 In te rn e t 站 点 下载 该 控 件 下 一 节 我 们 会 看 到 这 个 特 色 是 如 何 工 作 的
现 在 我 们 已 定 义 一 个 对 象 一 大 串 <P A R A M > 标 记 紧 随 其 后 这 些 标 记 定 义了 在 向 用 户 显 示 该 控 件 时 如 何 配 置 它 <PA R A M > 标 记 总 是 包 括 两 个 属 性 NAM E 和 VAL UE NAM E 特 性 定 义 了 你 想 设 置 的 参 数 名 称 而 VAL U E 属 性 则 向 参数 赋 一 个 值 所 有 值 都 用 双 引 号 括 起 来 既 便 是 数 值 也 不 例 外
程 序 列 表 中 最 后 三 个 参 数 是 任 何 环 境 下 使 用 该 控 件 时 能 够 设 置 的 永 久 性特 性 C a p tio n 标 题 特 性 改 变 按 钮 顶 部 的 文 本 就 好 象 你 是 在 V is u a l C + + 中使 用 该 控 件 一 样 O n O ff 特 性 是 这 个 控 件 所 特 有 的 — — 它 允 许 你 创 建 一 个O n / O f f 按 钮 第 11 章 中 我 们 要 创 建 一 个 实 际 控 件 到 那 时 就 会 看 到 它 如 何 工作 M o d a lR e s u lt 参 数 允 许 控 件 返 回 一 个 基 于 其 当 前 标 题 的 值 例 如 按 钮 标题 是 On 时 控 件 返 回 为 8
还 有 一 些 通 常 你 不 无 须 关 心 的 参 数 但 把 控 件 作 为 W e b 页 一 部 分 时 却 需 要进 行 处 理 _V e rs ion 参 数 在 下 载 过 程 中 起 作 用 它 帮 助 浏 览 器 对 照 服 务 器 上 的控 件 版 本 来 确 定 客 户 机 的 控 件 版 本 是 否 已 经 过 时 _E n te n t X 和 _E n te n t Y 特 性则 在 W e b 页 上 将 控 件 定 位 最 后 _S to c k P rops 属 性 定 义 控 件 的 族 系 特 性 ─ ─ 通 常 不 需 设 置 它 们
接 下 来 你 将 看 到 的 是 一 个 串 支 持 A c tiv e X 的 浏 览 器 将 会 忽 略 这 个 串 只有 当 客 户 机 不 支 持 A c tiv e X 时 这 个 串 才 被 显 示 出 来 实 质 上 它 从 另 一 方 面 告诉 用 户 如 果 它 们 的 浏 览 器 提 供 了 正 确 的 支 持 那 么 它 们 立 即 就 能 看 到 一 个A c tiv e X 控 件 你 不 必 受 限 于 一 个 串 尽 管 你 总 是 可 以 在 这 里 放 上 一 个 等 价 的HT M L 控 件 例 如 这 个 A c tiv e X 控 件 是 一 个 能 用 HT M L 代 码 代 替 的 按 钮 尽管 它 不 再 这 样 灵 活 了
前 面 我 们 谈 到 可 以 从 In te rn e t 上 下 载 的 文 件 有 三 种 类 型 OC X CA B 和 IN F OC X 文 件 格 式 又 称 为 可 移 植 的 可 执 行 文 件 PE 格 式 使 你 能 用 最 终 形 式 向客 户 机 发 送 控 件 在 另 一 边 不 需 附 加 处 理 从 长 远 看 来 意 味 着 你 遇 到 的 支 持问 题 会 更 少 CA B 文 件 格 式 与 M ic ros oft 发 行 ( s h ipp ing ) 产 品 ( 如 W ind ow s ) 时 使
用 一 样 的 格 式 它 独 到 的 优 点 是 让 你 在 一 个 单 一 包 中 发 行 多 个 控 件 这 种 格 式还 提 供 了 文 件 压 缩 功 能 从 而 减 少 用 户 的 下 载 时 间 缺 点 是 太 复 杂 你 不 得 不创 建 几 个 安 装 文 件 还 包 括 一 个 IN F 文 件 另 外 一 旦 下 载 完 成 之 后 用 户 需要 等 待 CA B 文 件 解 压 缩 然 后 安 装 它 们 这 就 使 得 这 种 方 法 更 可 能 会 使 用 户 忍受 不 了 并 在 它 们 试 图 取 消 这 种 处 理 过 程 时 引 起 许 多 问 题 IN F 格 式 允 许 选 择性 地 安 装 一 个 或 多 个 控 件 它 使 用 的 IN F 文 件 的 格 式 类 似 于 W ind ow s 用 户访 问 你 的 站 点 时 就 会 看 到 某 种 类 型 的 安 装 屏 幕 显 示 它 的 缺 点 dow ns id e 是 仍 然 要 创 建 IN F 文 件 使 用 IN F 文 件 意 味 着 当 用 户 等 待 页 下 载 时 让 他 感到 完 全 厌 烦 的 机 会 会 更 少 而 且 他 们 至 少 是 过 程 的 一 部 分 我 们 将 在 本 章 后 面讨 论 IN F 格 式 参 见 使 用 D IA N T Z .E XE 建 立 组 件 下 载 (C A B ) 文 件
8. 4 CO M+ In te rn et 的 未 来
对 W ind ow s 进 行 的 任 何 技 术 讨 论 必 然 要 包 括 对 组 件 对 象 模 型 CO M 的 讨论 CO M 是 一 种 对 象 技 术 已 成 为 W ind ow s 的 全 部 技 术 的 基 础 并 且 还是 M ic ros oft 向 In te rn e t 进 军 的 一 部 分 CO M 不 仅 与 用 户 相 互 作 用 而 且 还 是创 建 类 似 于 应 用 程 序 中 使 用 的 按 钮 之 类 的 组 件 的 技 术 基 础 换 言 之 不 以 某 种方 式 讨 论 一 下 CO M 就 不 能 开 始 对 In te rn e t 的 W ind ow s 或 M ic ros oft 版 本 进 行讨 论
就 在 一 年 前 A c tiv e X 还 是 表 达 M ic ros oft 进 军 In te rn e t 的 新 版 CO M 的 中 心词 汇 但 是 现 在 已 经 证 明 A c tiv e X 太 庞 大 尽 管 A c tiv e X 控 件 远 远 小 于 被 它
取 代 的 OC X 太 依 赖 于 浏 览 器 而 且 对 大 多 数 人 来 说 又 有 太 多 的 安 全 风 险另 外 M ic ros oft 市 场 部 正 在 用 A c tiv e X 来 描 述 M ic ros oft 正 在 发 布 的 几 乎 每 一 项新 技 术 这 样 只 能 使 客 户 更 加 迷 惑
当 CO M + 及 分 布 式 网 际 网 应 用 程 序 D is tr ib u te d in te r N e t A p p lic a tio n DNA 出 现 在 In te rn e t 时 就 又 有 了 两 个 新 鲜 而 又 激 动 人 心 的 术 语 让 你 学 习 了 A c t iv e X 不 再 是 描 述 M ic ros oft 的 CO M 技 术 诸 个 方 面 的 术 语 它 仅 关 系 到 在 应 用 程 序 或内 部 网 站 点 中 创 建 并 使 用 的 组 件 如 果 你 正 在 谈 论 使 能 技 术 或 DNA 技 术 如果 你 正 在 谈 论 CO M + 技 术 的 进 展 情 况 那 么 在 In te rn e t 上 干 任 何 事 现 在 都 称 为CO M +
WEB 链 接 可 以 在 http://www .microsoft.com/com/d efault. htm 上 得 到Microsoft 种 种 最 新 的 COM 技 术 这 个 站 点 可 使 你 一 直 跟 得 上Microsoft 正 在 引 入 的 各 种 与 C O M 相 关 的 技 术 发 展 以 及 预 期 它 们 是如 何 发 展 的
事 实 上 作 为 C+ + 程 序 员 需 要 了 解 相 当 多 的 基 于 CO M 的 技 术 下 列 章 节将 快 速 地 浏 览 一 下 这 些 技 术 并 讨 论 如 何 将 它 们 放 入 一 般 方 案 中 显 然 在M ic ros oft 升 级 其 CO M 技 术 时 这 种 讨 论 也 会 有 所 变 化
分 布 式 CO M DC O M ─ ─ 网 络 接 口 C O M 的 这 一 版 允 许 组 件 和 应 用 程 序在 网 络 上 进 行 通 信 DC OM 设 计 得 可 以 在 相 当 多 的 网 络 协 议 ─ ─ 包 括In te rn e t 使 用 的 TC P / IP ─ ─ 上 进 行 通 信 DC O M 为 开 发 人 员 所 能 做 到 的是 允 许 客 户 的 应 用 程 序 只 要 使 用 标 准 的 CO M 接 口 就 可 和 运 行 于 服 务 器 上的 服 务 直 接 通 信 实 际 上 这 就 意 味 着 你 可 以 设 计 一 个 控 件 或 一 小 段 程 序
使 得 客 户 机 的 应 用 程 序 从 服 务 器 接 收 数 据 然 后 在 本 地 对 这 些 数 据 进 行 计算 另 外 DC OM 使 得 我 们 可 以 在 客 户 机 和 服 务 器 间 进 行 安 全 通 信 而 不需 关 心 所 用 的 协 议
CO M + ─ ─ 功 能 标 准 CO M 接 口 扩 充 它 是 现 有 的 CO M 标 准 的 扩 充 使开 发 人 员 能 利 用 特 殊 的 CO M + 调 用 来 设 计 高 级 的 控 件 CO M + 提 供 的 最 重要 的 CO M 扩 充 是 数 据 捆 绑 允 许 组 件 提 供 数 据 库 访 问 添 加 数 据 库 访 问意 味 着 可 以 使 用 CO M + 为 能 访 问 远 程 数 据 的 In te rn e t 建 立 组 件 CO M + 还 是分 布 式 网 际 网 DNA 体 系 结 构 的 基 础 而 DNA 是 M ic ros oft 的 最 新 的In te rn e t 版 本
理 论 上 DNA 允 许 CO M 组 件 可 以 在 任 意 平 台 上 执 行 并 且 允 许 开 发 人 员可 以 使 用 任 意 语 言 写 出 该 组 件 可 以 使 用 任 意 语 言 和 任 意 平 台 进 行 工 作 的 这 部分 能 力 来 源 于 一 个 称 之 为 侦 听 器 的 CO M + 新 特 色 使 用 侦 听 器 允 许 CO M + 组件 可 以 在 运 行 期 间 调 用 多 种 服 务 而 不 是 依 赖 于 某 一 具 体 服 务 你 将 使 用 侦 听器 接 收 和 处 理 与 实 例 创 建 调 用 与 返 回 出 错 以 及 实 例 删 除 有 关 的 事 件 侦 听器 还 提 供 了 处 理 事 务 及 系 统 监 督 的 机 制
M ic ros oft 事 务 服 务 器 M T S ─ ─ 功 能 C O M 服 务 器 信 不 信 由 你 M T S 是 CO M 的 一 部 分 它 允 许 开 发 人 员 创 建 轻 型 ( lite ) 控 件 这 种 控 件 集中 于 处 理 组 件 背 后 的 事 务 逻 辑 而 不 是 处 理 组 件 所 需 要 的 全 部 接 口 建 立轻 型 控 件 意 味 着 能 够 更 快 地 创 建 它 们 使 用 时 下 载 时 间 更 少 M T S 将 成 为IIS 4 . x 的 一 部 分
A c tiv e X ─ ─ 功 能 组 件 建 立 A c tiv e X 最 初 是 作 为 In te rn e t 的 一 项 新 技 术 而
引 入 的 它 是 一 种 组 件 建 立 技 术 它 是 M ic ros oft 组 件 技 术 的 第 三 个 版 本 将 A c tiv e X 从 以 前 的 OL E 控 件 扩 充 OC X 中 分 离 出 来 的 原 因 之 一 是 可以 在 类 似 于 In te rn e t 的 高 级 潜 在 网 络 中 使 用 它 们 它 们 还 设 计 得 可 以 与 浏 览
器 一 起 工 作 尽 管 在 写 出 本 书 时 真 正 使 用 它 们 的 唯 一 浏 览 器 只 有 In te rn e l E xp lo re r A c t iv e X 控 件 的 特 色 还 包 括 增 量 绘 制 和 代 码 签 名 使 得 用 户 可 以在 控 件 执 行 前 识 别 出 它 们 的 作 者
- 5 从 In te rn et 上 下 载 Ac ti ve X
本 章 中 介 绍 的 大 部 分 HT M L 标 记 的 作 用 是 很 明 显 的 浏 览 器 看 到 标 记 后 就把 标 记 的 要 求 显 示 出 来 整 个 过 程 简 单 易 懂 但 是 A c tiv e X < O B J E C T > 标 记 却相 当 不 简 单 当 浏 览 器 看 到 一 个 <O B J E C T > 标 记 后 会 发 生 什 么 事 ? 我 们 知 道 它不 会 只 是 简 单 地 在 屏 幕 绘 制 控 件 ─ ─ A c tiv e X 控 件 提 供 了 比 这 多 得 多 的 功 能
M ic ros oft 已 作 出 了 一 个 新 的 W ind ow s A P I 调 用 供 浏 览 器 使 用 — — C o G e tC la s s O b je c tF ro m U R L 当 浏 览 器 看 到 一 个 < O B J E C T > 标 记 时 它 先 分析 出 C L A SS ID CO D E BA S E 和 _V e rs ion 参 数 并 把 这 些 参 数 传 送 给C o G e tC la s s O b je c tF ro m U R L 如 有 必 要 这 个 AP I 可 以 来 完 成 控 件 的 下 载 验证 和 安 装 这 个 AP I 调 用 做 的 第 一 步 是 检 查 当 前 注 册 表 中 是 否 包 含 着 对C L A SS ID 的 引 用 你 可 以 在 注 册 表 的 HKE Y _ C L AS S E S _ R O OT |C L S ID 关 键 字中 找 到 这 一 引 用 如 图 8 .10 所 示
WEB 链 接 关 于 <OBJECT> 标 记 的 规 范 及 其 相 联 系 的 API 调 用 处 于 经 常 变 动之 中 若 想 得 到 有 关 <OBJECT> 标 记 的 最 新 信 息 请 参 看 http://www . w 3 . org/TR/WD- object.html
如 果 C o G e tC la s s O b je c tF ro m U R L 找 到 了 安 装 在 客 户 上 的 A c tiv e X 控 件 的 实例 它 就 检 查 其 版 本 号 当 安 装 在 客 户 机 上 的 控 件 版 本 号 大 于 等 于 HT M L 页 上指 出 的 版 本 号 时 C o G e tC la s s O b je c tF ro m U R L 就 装 载 本 地 控 件 而 不 再 从 In te rn e t 上 下 载 这 个 控 件 控 件 装 载 完 后 C o G e tC la s s O b je c tF ro m U R L 就 为 它 创 建 一 个类 工 厂 C la ss F a c to r y 并 把 类 工 厂 传 送 回 浏 览 器 一 个 类 工 厂 和 其 它 工 厂 一样 工 作 它 产 生 出 一 些 项 在 上 述 情 况 下 它 允 许 浏 览 器 产 生 对 象 的 一 个 实 例 否 则 AP I 调 用 就 请 求 浏 览 器 从 In te rn e t 站 点 下 载 代 码
下 载 是 一 个 异 步 处 理 过 程 ─ ─ W ind ow s 等 待 下 载 完 成 的 过 程 中 能 完 成 其 它与 A c tiv e X 有 关 的 任 务 一 旦 浏 览 器 完 成 下 载 并 在 必 要 时 解 压 缩 后 就 调 用W ind ow s 信 任 提 供 者 服 务 函 数 W in V e r if y T ru s t 这 个 服 务 到 A c t iv e X 控 件 内 部检 查 并 确 定 是 否 有 签 名 块 签 名 块 包 含 有 作 者 姓 名 公 开 密 钥 以 及 控 件 内 容 加密 摘 要 等 可 以 把 A c tiv e X 控 件 签 名 块 看 成 是 支 票 的 签 名 驾 驶 执 照 或 一 份 合约 它 不 仅 指 出 你 是 谁 而 且 还 验 证 你 是 不 是 你 说 的 你 是 谁 ( y o u a re w ho y ou s a y yo u are) 若 W in V e r if y T ru s t 调 用 找 到 了 一 个 签 名 块 也 称 为 证 书 它 就 对 证书 进 行 证 实 每 个 证 书 能 够 包 含 一 个 父 证 书 的 名 称 W in V e r if y T ru s t 沿 着 证 书的 分 层 树 上 溯 直 至 到 达 根 证 书 然 后 它 就 在 可 信 任 的 根 证 书 列 表 中 找 这 份 根 证书 若 能 找 到 C o G e tC la s s O b je c tF ro m U R L 自 动 地 装 入 控 件 并 为 它 创 建 一 个 类工 厂 否 则 用 户 就 会 收 到 一 条 该 控 件 不 可 信 的 消 息 当 我 们 在 第 10 章 中 创 建
— 个 A c tiv e X 控 件 并 在 W e b 页 中 使 用 时 你 会 看 到 这 一 消 息 的
图 8. 10 W ind ow s 在 HKE Y _ C L AS S E S _ R O O T |C L S ID 关键 字中 存放 A c t iv e X 控件 的类 标识 符
注 公 开 密 钥 的 作 用 如 同 共 用 房 屋 或 公 寓 的 安 全 门 钥 匙 ─ ─ 它 使 你 能 进 入
大 楼 私 有 密 钥 则 如 同 公 用 房 屋 或 公 寓 的 室 门 钥 匙 ─ ─ 它 使 你 进 入 你 的起 居 室
即 使 一 个 A c tiv e X 控 件 不 出 现 在 可 信 任 的 列 表 中 用 户 仍 可 选 择 是 否 安 装这 个 A c tiv e X 控 件 若 选 择 安 装 这 个 控 件 用 户 就 会 被 问 及 是 否 想 把 控 件 作 者添 加 到 他 们 的 信 任 列 表 中 去 向 列 表 添 加 作 者 姓 名 意 味 着 同 一 作 者 的 任 一 新控 件 将 会 立 即 得 到 承 认 我 们 将 在 第 十 四 章 中 更 详 细 地 讨 论 安 全 问 题
这 些 控 件 安 装 在 什 么 地 方 呢 ? 理 论 上 控 件 设 计 者 可 以 把 控 件 放 在 任 何 位置 但 是 大 部 分 从 In te rn e t 下 载 的 A c t iv e X 控 件 都 不 会 自 动 地 出 现 在 用 户 的类 似 Sy s te m 系 统 文 件 夹 这 样 的 地 方 实 际 上 它 们 被 添 加 到 名 为 O CCA CH E 的 一 个 特 殊 文 件 夹 中 这 个 文 件 夹 可 以 出 现 在 用 户 机 器 的 任 何 位 置 通 常 你 可以 在 W in dow s 主 文 件 夹 / S Y S TEM 文 件 夹 或 用 户 的 In te rn e t 文 件 夹 中 找 到 这个 文 件 夹 一 些 浏 览 器 还 使 用 A c tiv e X C o n tro l C a c h e 文 件 夹 它 位 于 存 放A c tiv e X 控 件 的 W ind ow 主 文 件 夹 中
注 可 以 找 到 从 Internet 上 下 载 的 ActiveX 控 件 的 最 普 遍 的 位 置 是 OCCAHE 文 件 夹
装 入 控 件 还 不 是 工 作 的 全 部 控 件 在 安 装 过 程 中 还 要 对 自 身 进 行 注 册 在大 多 数 情 况 下 这 意 味 着 要 调 用 D llR e g is te r S e rv e r A P I 函 数 完 成 安 装 及 注 册后 C o G e tC la s s O b je c tF ro m U R L 函 数 把 与 控 件 相 联 系 的 类 工 厂 传 回 浏 览 器 浏览 器 使 用 类 工 厂 创 建 一 个 对 象 实 例 并 对 <O B J E C T > 标 记 传 送 的 参 数 进 行 初 始化 必 要 的 话 将 控 件 显 示 到 屏 幕 上
ActiveX 与 Netscape N avigator
如 果 你 管 理 着 一 个 内 部 网 站 点 你 总 是 能 控 制 让 谁 访 问 站 点 以 及 它 们 应 该用 什 么 浏 览 器 来 进 行 访 问 这 时 如 果 想 使 用 A c tiv e X 那 么 你 就 只 需 要 简单 地 要 求 每 个 人 都 使 用 In te rn et E x p lo rer 就 可 以 了 但 是 对 于 In te rn e t 站 点 来说 却 做 不 到 这 一 点 所 以 就 不 得 不 确 保 站 点 支 持 尽 可 能 多 的 浏 览 器 In te rn e t E xp lo re r 直 接 支 持 A c t iv e X 而 N e ts c a p e N a v ig a to r 却 不 是 这 样 幸 运 地 是 有一 种 可 供 选 择 的 办 法 使 A c tiv e X 可 以 在 这 样 的 环 境 中 工 作
N C om pa s s L a bs ,Inc . 公 司 生 产 了 一 种 称 为 S c r ip t A c tiv e 的 插 件 它 允 许 使 用
N e ts c a pe N a v iga to r 3 .0 看 到 含 有 A c tiv e X 控 件 的 HT M L 页 在 写 本 书 时
N C om pa s s 的 插 件 和 In te rn e t E x p lo re r 3 . 0 的 A c tiv e X 控 件 在 能 力 上 是 类 似 的 在使 用 这 个 插 件 之 前 可 能 需 要 花 些 时 间 研 究 一 下 它 N C om pa s s 在 h ttp : // w w w . n c o m p a ssla b s.c o m / 为 S c r ip t A c tive 及 其 它 产 品 提 供 支 持
不 幸 的 是 使 用 当 前 版 本 的 S c r ip t A c tiv e 不 太 简 单 你 不 得 不 操 作 <O B J E C T > 标 记 的 一 些 特 殊 格 式 来 让 它 工 作 还 算 幸 运 这 个 插 件 中 还 包 含 有 可 以 完 成 大部 分 工 作 的 HT M L 转 换 实 用 程 序 名 称 是 N C onve r t 程 序 列 表 8 .7 显 示 的 是 使用 这 个 实 用 程 序 创 建 标 准 的 A c tiv e M o v ie 控 件 所 产 生 的 结 果
程 序 列 表 8 . 7
<!- 插入一个 A c tiv e M o v ie 控件 ->
< O B J E C T ID = " A c t iv e M o v ie 1 " W IDT H= 2 6 7 HE IG HT = 7 3
C L A S S ID = " C L S ID : 0 5 5 8 9 FA 1 - C 3 5 6 - 1 1C E - B F 01- 00 A A 0 0 5 5 5 95A "
C O D E B A S E = " h ttp ://a u x /c o n tro ls " >
< P AR AM N A M E = " _ E x te n t X " V A L U E = " 7 0 3 8 " >
< P AR AM N A M E = " _ E x te n t Y " V A L U E = " 1 9 3 1 " >
< E M B E D NAM E = " A c t iv e M o v ie 1 " W ID T H= 2 6 7 HE IGHT = 7 3
C L A S S ID = " C L S ID : 0 5 5 8 9 FA 1 - C 3 5 6 - 1 1C E - B F 01- 00 A A 0 0 5 5 5 95A "
C O D E B A S E = " h ttp ://a u x /c o n tro ls " T Y P E = " ap p l icatio n /o leo bject"
P A R A M __E x te n t X =" 7 0 3 8 " P A R A M __E x te n t Y =" 1 9 3 1 "
> < / O B J EC T>
警 告 一 旦 从 一 个 特 定 的 <OBJECT> 标 记 向 一 个 <OBJECT> 标 记 和 <EMBED> 标记 组 合 的 转 换 就 不 要 通 过 单 击 HTML 页 上 邻 接 元 素 的 <OBJECT>标 记来 编 辑 ActiveX 控 件 在 某 些 情 况 下 编 辑 器 会 改 变 <EMBED> 标 记使 之 不 能 正 常 工 作 最 好 创 建 自 己 的 W e b 页 并 在 Internet Explorer 中 测 试 它 然 后 添 加 所 需 的 <EMBED> 标 记 使 它 通 过 NCompass ScriptActi ve 插 件 来 进 行 工 作
请 注 意 |
N C onve r t 采 纳 了 < O B J EC T> 标 记 的 信 息 并 在 同 一 信 息 上 |
添 加 一 个 |
|
---|---|---|---|
< |
E M B E D > |
标 记 N a v iga to r 能 识 别 出 <EM B ED > 标 记 是 要 向 插 件 中 |
传 达 某 种 |
信 息 插 件 用 S c r ip t A c tiv e 完 成 它 的 工 作 因 为 In te rn e t E xp lore r 不 能 理 解 上 下
文 中 的 <E M B E D > 标 记 多 出 来 的 这 些 信 息 不 引 起 任 何 问 题 这 一 部 分 额 外 的 代码 的 存 在 理 由 是 相 当 明 显 的 S c r ip t A c tiv e 插 件 需 要 一 个 特 殊 的 TY P E 属 性使 用 它 指 定 对 象 的 因 特 网 M IM E 类 型 根 据 供 货 商 的 说 法 S c r ip t A c tiv e 将 来 的版 本 中 不 再 需 要 这 一 附 加 信 息 并 且 能 够 不 加 修 改 地 使 用 <O B J E C T > 标 记
技 巧 一 旦 NCompass ScriptActi ve 插 件 安 装 成 功 用 右 键 单 击 文 件 时 就 会 看 到 N Convert 关 联 菜 单 项 这 个 项 包 含 两 个 选 项 NConvert 转换 和 Set Dest ination Folder( 目 的 文 件 夹 设 置 ) 使 用 Set Dest ination Folder 这 个 选 项 可 以 告 诉 实 用 程 序 你 想 把 转 换 过的 文 件 放 于 何 处 如 果 不 想 用 转 换 过 的 文 件 复 盖 原 来 的 文 件 那 么就 要 指 定 一 个 特 殊 目 录 Convert 选 项 的 作 用 是 插 入 产 品 的 当 前 版 本所 需 的 所 有 <EMBED>标 记
S c r ip t A c tiv e 还 支 持 VB S c r ip t 但 是 它 是 通 过 添 加 一 个 外 部 的 AXS 文 件 来 实现 的 一 定 要 保 证 AXS 文 件 与 包 含 VB S C r ip t 的 HT M L 文 件 在 同 一 个 目 录 中
N C onve r t 添 加 一 些 J a va S c r ipt 行 从 而 建 立 N a v iga to r 和 Sc r ip t A c tiv e 之 间 的 联系 S c r ip t A c tiv e 收 到 请 求 后 就 在 AXS 文 件 中 寻 找 合 适 的 VB S c r ip t 代 码 不幸 地 是 S c r ip t A c tiv e 对 VB s c r ip t 的 支 持 相 当 有 限 在 使 AXS 文 件 工 作 之 前请 对 这 个 文 件 中 的 VB S c r ip t 代 码 进 行 再 加 工 如 果 计 划 在 一 个 站 点 上 同 时 使 用In te rn e t E x p lo re r 和 N a v ig a to r 那 么 最 好 的 方 法 是 优 先 使 用 Ja v a S c r ip t 而 尽 量避 免 使 用 VB S c r ip t
使 用 S c r ip t A c tiv e 带 来 的 另 一 个 问 题 是 它 不 能 总 是 让 你 访 问 与 对 象 相 联 系的 属 性 事 实 上 支 持 的 级 别 甚 至 会 随 机 器 而 变 具 有 相 同 配 置 且 使 用 相 同 硬
件 的 两 台 机 器 在 一 个 具 体 的 W e b 页 上 也 可 能 显 示 出 不 同 的 结 果 不 同 的 控件 看 起 来 也 提 供 可 变 化 的 访 问 级 别 复 杂 的 控 件 往 往 比 简 单 的 控 件 出 的 问 题 更多 考 虑 到 In te rn e t 处 于 不 断 变 化 之 中 且 A c t iv e X 技 术 相 对 比 较 年 轻 出 现 这 些问 题 也 不 值 得 大 惊 小 怪 你 能 够 期 盼 获 得 的 最 好 结 果 是 显 示 控 件 于 屏 幕 至 于它 能 不 能 实 际 工 作 则 是 另 一 回 事 了
尽 管 存 在 这 些 问 题 使 用 A c tiv e X 控 件 的 前 途 是 太 光 明 了 不 允 许 忽 视 它类 似 于 S c r ip t A c tiv e 的 第 三 方 厂 商 的 插 件 差 不 多 是 在 W e b 站 点 上 能 够 使 用A c tiv e X 的 唯 一 途 径 并 且 仍 能 保 证 访 问 站 点 的 大 多 数 人 能 够 实 实 在 在 地 看到 你 所 提 供 的 内 容 有 传 言 说 N e ts c a p e N a v ig a to r 的 下 一 版 将 直 接 支 持 A c tiv e X 但 在 今 天 S c r ip t A c tiv e 依 然 是 你 最 好 的 解 决 方 案
- 6 增 强 HT ML 的 功 能
我 们 可 以 对 一 个 W e b 站 点 进 行 许 多 方 面 的 增 强 ( E nha nc e m e n t) 实 际 上 你将 在 In te rn e t 上 看 到 的 各 种 增 强 大 概 能 塞 满 整 整 这 一 本 书 对 W e b 页 使 用 增强 会 产 生 两 方 面 的 问 题 第 一 大 部 分 技 术 在 数 据 格 式 上 需 要 一 些 约 定 你不 得 不 考 虑 一 个 访 问 者 是 否 真 想 下 载 数 据 从 而 产 生 所 要 的 效 果 第 二 可以 发 现 一 些 增 强 在 这 个 浏 览 器 工 作 得 不 错 而 在 另 一 个 浏 览 器 却 不 行 在 后面 的 章 节 中 我 们 将 陷 入 这 些 不 兼 容 性 之 中 所 以 从 现 在 开 始 我 不 再 对 这 一 点进 行 反 复 说 明
对 W e b 站 点 能 够 进 行 的 最 流 行 的 两 种 增 强 是 声 音 和 动 画 到 目 前 为 止 声
音 在 二 者 之 中 更 为 流 行 但 这 里 我 们 并 不 是 要 看 完 整 的 ( fu ll- f le dge ) C D 或 优 雅 的传 真 图 像 声 音 以 声 音 字 节 流 的 形 式 出 现 声 音 字 节 流 是 一 小 段 声 音 可 以 添加 到 你 试 图 在 W e b 站 点 上 获 得 的 效 果 中 去 大 多 数 情 况 下 人 们 使 用 W A V 文件 向 站 点 添 加 声 音 也 在 一 些 人 使 用 M ID I 文 件 添 加 音 乐 不 论 你 使 用 声 音 支持 的 哪 一 种 形 式 当 决 定 添 加 多 少 声 音 时 要 小 心 谨 慎 少 一 些 为 好 应 该 给 人关 闭 声 音 的 选 择 以 便 于 它 们 在 办 公 室 工 作 时 能 访 问 你 的 站 点
使 用 字 幕 是 向 W e b 页 添 加 动 画 形 式 的 一 种 途 径 字 幕 所 做 的 一 切 就 是 显 示一 个 滚 动 的 消 息 或 图 形 图 像 这 一 标 记 的 文 本 处 理 能 力 受 到 一 些 限 制 任 何 添加 到 < M A R Q U EE> 标 记 中 的 花 体 (fa n c y ) 文 本 将 不 在 屏 幕 上 显 示 你 开 始 使用 的 文 本 就 是 一 直 不 变 的 文 本 字 体 这 就 意 味 着 在 实 际 显 示 字 幕 之 前
要 进 行 你 想 做 的 格 式 化 这 也 正 是 许 多 程 序 员 宁 愿 使 用 图 像 的 原 因 M ic ros oft
还 提 供 了 字 幕 的 A c tiv e X 版 本 作 为 A c tiv e X C o n tro l P a b 实 用 程 序 的 一 部 分
警 告 使 用 <MARQUEE> 标 记 时 总 是 要 使 用 LOOP 属 性 因 为 如 果 不 使 用 LOOP 属 性 支 持 <MARQUEE> 的 有 些 浏 览 器 就 会 做 出 奇 怪 的 反 应 你 第 一 次使 用 这 个 特 定 标 记 时 注 意 收 集 用 户 反 馈 是 非 常 重 要 的 因 为 在 旧 式的 浏 览 器 上 它 非 常 容 易 引 起 麻 烦 虽 然 有 些 不 完 美 但 进 行 一 些 小的 改 动 也 许 就 能 使 这 个 标 记 在 你 的 站 点 上 确 实 支 持 这 个 标 记 的 每 个浏 览 器 工 作
在 不 用 增 加 太 多 开 销 但 确 实 要 增 加 一 些 的 前 提 下 动 画 确 实 能 为 站 点增 光 问 题 当 然 是 要 花 费 时 间 来 创 建 某 种 动 画 例 程 一 些 人 也 许 试 图 写 一 个 脚本 或 创 建 一 个 A c tiv e X 控 件 来 完 成 这 一 工 作 但 这 可 用 更 好 的 方 式 来 解 决 如
果 你 不 想 创 建 花 哨 的 动 画 方 案 的 话 就 不 必 被 迫 去 这 样 做 只 需 使 用 一 个 动 画G IF 即 可 如 果 你 和 我 一 样 也 许 会 问 动 画 G IF 到 底 是 什 么 呢 ? 因 为 大 多 数 程序 员 从 未 见 到 过 它 实 际 上 如 果 你 在 In te rn e t 上 花 费 了 很 多 时 间 也 许 已 经 看到 了 一 两 个 这 样 的 文 件 一 个 动 画 G IF 是 由 一 组 图 像 组 成 的 这 些 图 像 在 你 的W e b 站 点 上 一 次 显 示 一 幅 如 果 非 常 细 心 你 就 能 够 使 用 动 画 G IF 创 建 动 画 效果 既 增 加 了 快 乐 又 收 藏 了 资 源 最 好 的 消 息 是 绝 大 多 数 浏 览 器 都 完 全 支 持动 画 G IF
WEB 链 接 在 许 多 Internet 站 点 可 以 看 到 活 动 的 动 画 GIF 一 个 更 有 趣 的站 点 是 http://www .wanderers2.com/rose /animate.html 这 个 站 点提 供 了 一 个 站 点 索 引 访 问 这 些 站 点 就 能 看 到 多 种 动 画 G I F 到 各 种站 点 去 转 一 转 会 帮 助 你 明 白 什 么 能 做 什 么 做 不 了 你 还 可 以 下 载动 画 G I F 向 导 从 而 使 你 自 己 的 动 画 G I F 在 线 并 能 学 习 有 关 怎 样 制作 动 画 G I F 的 全 部 知 识
利 用 声 音 和 其 它 效 果 使 Web 页 面 更 引 人 入 胜
(W A V 文 件 中 的 ) 声 音 片 段 ( b ite s ) 对 于 装 饰 一 个 W e b 站 点 大 有 好 处 但 是如 果 每 次 用 户 完 成 一 个 最 小 的 任 务 时 你 都 连 续 地 演 奏 声 音 就 会 令 用 户 心 烦意 乱 因 此 声 音 片 段 要 短 且 要 用 在 点 子 上 添 加 声 音 要 像 厨 师 添 加 调 料 一 样少 许 的 调 料 对 烧 出 味 道 鲜 美 的 菜 肴 大 有 裨 益 用 多 了 调 料 反 而 使 人 倒 胃 口
W e b 站 点 的 东 西 越 小 越 好 最 近 到 一 些 站 点 的 访 问 表 明 一 些 站 点 五 彩 缤纷 非 常 有 趣 且 下 载 又 非 常 之 快 看 了 一 下 代 码 反 映 了 一 个 共 同 现 象 那 就
是 所 有 作 者 都 用 表 格 和 框 架 (fra m e ) 将 页 面 分 成 更 小 的 区 每 个 小 区 使 用 小 图 标和 图 形 使 页 面 看 起 来 非 常 漂 亮 另 外 作 者 还 用 某 种 谐 调 的 绘 制 方 案 使 得每 个 框 架 (fra m e ) 有 独 特 的 外 观 并 且 页 面 也 没 有 显 得 俗 气
下 面 来 看 一 个 示 例 页 面 这 一 页 对 我 们 在 本 章 中 已 讨 论 过 的 概 念 作 了 示 范性 说 明 程 序 列 表 8 .8 到 8 .12 显 示 的 是 怎 样 制 作 这 一 页 注 意 到 这 里 包 含 了 一些 小 的 图 形 和 框 架 (fra m e ) 来 组 织 信 息 在 这 里 还 可 以 看 到 本 章 中 学 习 过 的 其 它技 巧 也 有 一 些 新 东 西 图 8 .11 显 示 了 这 一 页 看 起 来 是 什 么 样 ─ ─ 至 少 从 灰度 上 你 需 要 适 当 地 使 用 颜 色 来 构 造 页 面
图 8 .11 我们 例子 中的 W e b 页表 明 不必 使用大 量的 资源 只要 将一 些简单 标记组合 起来 就能 创建一 个令 人感 兴趣的 W e b 页面
程 序 列 表 8 . 8
<!- F R A M E .H T M ->
<H T M L >
<H E A D >
< T IT L E > S am p le W e b P a ge < / T IT L E >
< / H E A D >
<!- 设置框架 参数 ->
< F R A M E S E T C O L S = " 1 5 % , * " R O W S = " 20 % ,80% " >
<!- 加入一个 图标 ->
< F R A M E S C R O L L ING= NO S R C = Ic o n . HT M >
<!- 创建一个 标题 ->
< F R A M E S C R O L L ING= NO S R C = H e a d in g . HT M >
<!- 列出可能 会感兴趣的一 些其它站点 ->
<FR A M E SR C = O th r S ite .H T M >
<!- 显示页的 主要内容 ->
< F R A M E S R C = M a in .H T M >
< / B ODY>
程 序 列 表 8 . 9
< ! - H E AD ING .HT M ->
<H T M L >
<H E A D >
< T IT L E > N e w P a g e < / T ITL E>
< / H E A D >
< B ODY B G C O L O R = W H IT E >
<!- 为我们的 站点定义标题 和字幕 ->
< C EN TE R > < H 1 > W e lc o m e to Th e T IM E S i te < / H 1 >
< H 3 > < F O N T C O LO R = W H ITE>
< M AR QUE E B G C O L O R = B L UE B E HA V IO R = A L T E R NA T E W IDT H= " 7 5 % " L OOP = INF IN IT E >
O n e o f th e b e s t p la c e s o n e a rth to le a rn th a t tim e is m o n e y !
< / M A R Q U EE>
< / H3 > < F ONT C O L O R = B L AC K >
< / C E N T E R >
< / B ODY>
< / H T M L >
程 序 列 表 8.10
< ! - IC ON .HT M ->
<H T M L >
<H E A D >
< T IT L E > N e w P a g e < / T ITL E>
< / H E A D >
< B ODY B G C O L O R = YE L L O W >
<!- 显示我们 的图标 ->
< IM G S R C = T im e It. G IF A L T = " F ro m 9 to 5 " >
< / B ODY>
< / H T M L >
程 序 列 表 8.11
< ! - O TH R S ITE .H T M ->
<H T M L >
<H E A D >
< T IT L E > N e w P a g e < / T ITL E>
< / H E A D >
< B ODY B G C O L O R = YE L L O W >
<!- 显示标题 ->
< C EN TE R > < F O N T C O LO R = B L U E >
< H 2 > O th e r In te re s tin g S ite s < /H 2 >
< / C E NT E R > < F O N T C O L O R = B L AC K>
<!- 显示时间 管理链接 ->
< P >< P > < / C E N T E R >< H 3 >T im e M a n a g e m e n t< / H 3 > < / C E N T E R >
< A H R E F = " h ttp ://w w w .tim e 1 0 1 .c o m " > T im e M a n a g e m e n t 1 0 1 < /A > < P >
< A H R E F = " h ttp ://w w w .b u s in e s s tim e . c o m " > T im e M a n a g e m e n t fo r B u s in e ss < / A > < P >
< A H R E F = " h ttp ://w w w .k ille rh e lp .c o m " > K ille r T im e r M a n a g e m e n t T e c h n iq u e s < / A > < P >
<!- 显示添加 的帮助链接 ->
< P > < P> < C EN TER >< H 3 > G e t tin g H e lp < / H 3 > < / C EN TE R >
< A H R E F = " h ttp ://w w w .s u p e rse rv e .c o m " > S u p e r S e rv ic e s < / A > < P >
< A H R E F = " h ttp ://w w w .iro n s .c o m " > T o o M a n y I ro n s in F ire < / A > < P >
< A H R E F = " h ttp ://w w w .b u s in e s s .c o m " > B u s in e s s H e lp to G o < / A > < P >
< / B ODY>
< / H T M L >
程 序 列 表 8.12
< ! - M A IN .H T M ->
<H T M L >
<H E A D >
< T IT L E > N e w P a g e < / T ITL E>
< / H E A D >
< B ODY B G C O L O R = B L UE L INK= YE L L O W VL INK= S IL V E R >
<!- 为进入站 点的人演奏声 音 ->
< ! - In te rn e t E xp lo re r 标记 >
< B GS OUN D S R C = " T w il Z o n e . W AV" L OO P = 1 >
<! N a v ig a to r 标记 >
< E M B E D S R C= " T w il Z o n e . W AV " H ID D E N = T R U E L OOP = 1 >
<!- 显示标题 ->
< C EN TE R > < F O N T C O LO R = Y ELL O W >
< H 2 > W h at't H a p p e n ing T h is W eek ? < / H 2 >
< / CE N T E R > < F O N T CO L O R = W H IT E >
<!- 显示当前 事件列表 ->
<U L >
< L I> L e a rn h o w to c re a t tim e in a b o ttle - - g e t y o u r o w n g e n ie .
d e m o n s trario ns o f h o w to w o rk w i th a g e n ie ev ery T u es d a y an d F r id ay . C a ll ( 5 5 5 )5 5 5 - 1 2 1 2 o r s e n d e m a il c a re o f th is s ite fo r m o re d e ta ils .
< L I> T ire d o f w o rk in g to o h a rd fo r to o little tim e o ff? L e a rn th e
s e c re ts of c lo n in g y o u rs e lf . T h e re s h ou ld be m o re of y ou. C l ic k< A H R E F
= " C lone " > H E R E < / A > fo r m o re de ta i ls .
< L I> B e th e en v y o f ev ery s a le sp erso n o u t th ere. H ire a n in f la ta b le d u m m y to s i t in fo r y o u a t th e o f f ic e w h ile y o u g o o u t a n d m a k e k illin g
in n e w s a le s . W e 'll s h o w y o u h o w a t< A H R E F = " h ttp ://w w w .d u m m y . c o m " > D u m m ie s U n lim ite d < /A >
< / U L >
<!- 为将来的 潜在销售提供 一个广告 ->
< C E N T E R > < H R W IDT H= 7 5 % > < / C E NT E R >
< S T R ONG> < H 3 > < C E N T E R > < P R E >
G e t y o u r a d o n th is s ite . W e 'll ru n ju s t a b o u t a n y a d a t a n y tim e s in c e
w e re a l ly n e e d th e m one y . I f y o u w a nt to l in e ou r po c k e ts w i th y our e x tra c a s h , g ive us a c a l l a t ( 5 5 5 ) 5 55- 1 2 12. Y o u c a n a lso s e nd us e m a i l
w h ic h w e 'll g la d ly a n s w e r T u e s d a y fo r s o m e m o n e y to d a y .
< / PR E > < / C E N T E R >< / H 3 > < / ST R O N G >
<!- 请给我们 发电子邮件 ->
< C E N T E R > < H R W IDT H= 7 5 % > < / C E NT E R >
< F O N T C O LO R = Y ELL O W S I ZE= - 1 >
& #169 ;19 96 M y C o m p a n y a nd A s so c ia te s , A l l R igh ts R e s e rv e d . S e nd u s s o m e
e m a il:< A H R E F = " m a ilto :a d m in @ m y c o m p a n y .c o m " > & lt;A d m in @ M y C o m p a n y .c o m & g t;
< / A >
< / B ODY>
< / H T M L >
注 释 这 个 例 子 并 没 有 涵 盖 你 所 能 做 的 一 切 事 情 下 一 节 中 我 们 将 讨 论 动画 GIF
正 如 你 所 看 到 的 这 个 站 点 的 画 面 还 不 是 很 完 美 但 是 它 大 概 比 你 过 去 访问 过 的 一 些 地 方 更 令 人 感 兴 趣 让 我 们 用 些 时 间 把 这 些 代 码 分 析 一 下 看 看 其 中包括 的更 具诱 惑力 的 部 分 你注 意到 的 第 一 件 事 是站点 分成 了 5 个文 件 可以 发现 通 过 使 用 分 离 开 的 文 件 使 得 对 具 有 框 架 的 站 点 进 行 维 护 更 加 容 易 另 外站点 上的 所有 页可 以使用 相 同 的 标 题 及 图 标 文 件 这 样 可以 为用 户节 约下载 时间程 序 列 表 8 .8 中 的 代 码 完 成 的 全 部 工 作 就 是 把 浏 览 器 工 作 区 分 成 若 干 框 架 然后再 定义 每个 单元 属于谁 应注 意 能够 明确 地用百 分 数 或 * 号来 定义 每个 框架 的区 域 浏 览 器 首 先 按 百 分 比 把 可 见 的 视 屏 分 给 定 义 的 区 域 然 后 再 把 剩 余 区 域 平均分配给其 它单元 使用这一特色 能够在 W eb 页上强制实 现某一方面的比例
注 使 用 ( * ) 号 定 义 某 框 架 时 其 意 义 是 浏 览 器 为 已 指 定 的 其 它 框 架 分 配 空
间 后 该 框 架 占 用 剩 下 的 窗 口 空 间
程 序 列 表 8 .9 含 有 W e b 站 点 的 标 题 这 里 的 代 码 中 唯 一 令 人 感 兴 趣 的 就是 字 幕 区 域 颜 色 的 使 用 在 整 个 站 点 谐 调 着 色 可 以 使 之 美 观 而 且 又 不 花 费 用户 多 少 下 载 时 间 还 应 注 意 到 这 个 字 幕 在 前 后 跳 跃 而 不 是 兜 着 圈 转
B E HAV IOR 属 性 就 是 负 责 这 种 变 化 方 式 的 使 用 多 种 属 性 来 提 供 特 殊 效 果 能够 使 你 的 站 点 更 加 令 人 注 目 还 应 注 意 这 是 站 点 上 唯 一 使 用 动 画 的 地 方 再 多了 就 会 使 人 反 感
可 移 植 性 <MARQUEE> 标 记 仅 在 Internet Explorer 中 工 作 若 使 用Navigator 仍 可 以 看 到 标 题 区 但 没 有 滚 动 的 字 幕 解 决 这 一 问 题的 较 好 的 方 案 是 创 建 一 个 Java applet 来 激 活 <MARQUEE> 标 记 的 行为 也 可 以 创 建 一 个 ActiveX 控 件 来 完 成 这 件 事 但 不 得 不 使 用 类 似于 NCompass S criptActive 之 类 的 插 件 使 控 件 与 Navigator 兼 容
程 序 列 表 8 .10 中 只 有 一 个 关 于 我 们 站 点 的 图 标 的 < IM G > 标 记 须 注 意
< B OD Y> 标 记 一 定 含 有 一 个 BG CO L O R 属 性 从 而 使 页 的 背 景 色 与 图 标 能 匹配 起 来 这 时 若 用 户 改 变 了 显 示 区 的 大 小 它 们 就 将 看 不 到 图 标 下 面 的 页 面颜 色 了
许 多 站 点 包 含 有 到 其 它 站 点 的 链 接 但 总 体 上 不 妨 碍 站 点 的 工 作 程 序 列表 8 .11 中 代 码 的 目 的 就 在 于 此 它 在 不 占 用 W e b 页 本 身 空 间 的 前 提 下 组 织了 从 当 前 站 点 到 因 特 网 其 它 站 点 的 链 接 这 样 做 不 仅 使 信 息 更 容 易 找 到 而且 还 可 以 把 它 作 为 你 自 己 站 点 的 一 个 分 类 索 引
在 程 序 列 表 8 .12 中 可 以 找 到 一 些 有 趣 的 编 码 技 巧 第 一 标 记 的 属 性 如 何
才 能 用 于 全 页 以 获 得 特 殊 效 果 例 如 应 注 意 如 何 使 用 <PR E > 标 记 为 页 面 中 间的 注 释 提 供 特 殊 格 式 还 应 注 意 到 这 一 页 使 用 了 反 视 频 色 暗 背 景 亮 文 字而 不 是 通 常 的 那 样 这 一 特 殊 效 果 使 页 面 的 主 要 部 分 从 它 周 围 的 辅 助 区 域 中突 出 出 来 In te rn e t 的 几 个 站 点 都 使 用 了 这 种 相 同 的 效 果 例 如
h t tp : / / www .p a c b e l l .c o m .
这 一 页 还 使 用 了 < B GS OU N D > 这 个 新 标 记 使 得 用 户 进 入 你 的 W e b 站 点 时就 为 他 演 奏 一 小 段 声 音 特 殊 的 L OOP 属 性 用 于 定 义 声 音 片 段 应 该 演 奏 几 遍 仅 使 用 < B G S O UND > 标 记 本 身 只 演 奏 一 次 通 常 最 好 包 含 进 L OOP 属 性 以防 止 出 现 不 兼 容 的 问 题 M ic ros oft 也 许 会 决 定 今 后 某 时 开 始 你 必 须 明 确 地指 示 < B GS OU N D > 标 记 应 把 声 音 演 奏 几 遍
可 移 植 性 问 题 请 注 意 <BGSOUND> 标 记 是 Internet E xplorer 专 用 的 必须 用 <EMBED> 标 记 使 Navigator 也 能 演 奏 声 音 有 大 量 的 与 此 相 类 似的 标 记 — — Internet Explorer 不 认 识 Navigator 标 记 而 Navigator 也 不 认 识 Internet E xplorer 的 标 记 作 为 程 序 员 必 须 通 过 添 加 所需 的 对 应 代 码 来 弥 补 这 一 问 题 上 的 缺 陷
在 程 序 列 表 8 .12 尾 部 还 可 以 看 到 完 成 某 些 任 务 的 两 种 新 方 法 第 一 个 新技 巧 是 使 用 & # < 数 字 > 来 表 示 特 殊 字 符 例 如 用 & #169 产 生 版 权 符 号 如 果 想把 这 些 特 殊 字 符 紧 挨 着 一 个 普 通 字 符 放 置 只 须 用 分 号 将 它 们 分 开 即 可 例 如& #169 ; 1996 第 二 个 新 技 巧 是 显 示 如 果 让 别 人 向 你 发 电 子 邮 件 你 的 W e b 站 点是 什 么 ? 这 只 须 提 供 一 个 HR E F 即 可
< A H R E F = " m a ilto :a d m in @ m y c o m p a n y .c o m " > & l t; A d m in @ M y C o m p a n y .C o m & g t;< /A >
这 里 的 秘 密 在 链 接 的 m a ilto 部 分 中 请 注 意 链 接 文 本 使 用 了 特 殊 字 符 的 另 一种 形 式 & lt 与 & g t 提 供 了 将 链 接 文 本 括 起 来 的 小 于 及 大 于 号
技 巧 ActiveX Co ntrol Pad 提 供 的 HTML 参 考 在 某 些 方 面 可 能 不 全 但它 提 供 了 这 些 特 殊 字 符 的 完 整 列 表 查 看 一 下 主 索 引 下 的 Character Set 类 即 可
添 加 动 画 GIF
如 果 说 前 面 几 节 中 还 没 有 介 绍 足 够 多 的 技 术 使 你 的 W e b 站 点 光 彩 夺 目 的话 那 么 还 有 许 多 其 它 你 能 够 使 用 的 方 法 世 界 上 的 W e b 站 点 所 有 者 最 钟 爱的 方 法 就 是 使 用 动 画 G IF 一 个 动 画 G IF 所 做 的 事 就 是 把 几 幅 图 片 打 包 成为 一 个 文 件 浏 览 器 则 一 幅 一 幅 地 连 续 放 映 这 些 图 片 形 成 连 续 动 画 的 错 觉还 能 够 使 用 特 殊 效 果 来 创 建 使 用 G IF 的 滑 动 演 示 这 种 方 法 带 来 的 问 题 是 下载 时 间 — — 滑 动 演 示 会 造 成 用 户 的 下 载 能 力 相 当 紧 张
注 释 本 节 教 你 如 何 使 用 Alchemy Mind Wo rks 的 GIF Construction Set 来创 建 GIF 这 个 软 件 可 从 几 个 地 方 下 载 最 好 的 地 点 是 直 接 从 供 货商 那 儿 下 载
http://www .mindworkshop.com/al chemy/gifcon.html 还 可 以 从 本章 前 面 提 到 的 动 画 G I F 观 看 站 点 中 下 载
http://www .wanderers2.com/rose /animate .html
本 例 中 使 用 G IF C o n s truc tion S e t 的 理 由 有 两 条 第 一 它 是 共 享 软 件 你可 以 把 它 从 In te rn e t 上 整 个 地 下 载 回 来 然 后 用 到 本 例 中 第 二 它 确 实 是 一 个相 当 好 的 程 序 大 多 数 人 发 现 用 它 创 建 动 画 G IF 非 常 好 但 是 你 会 注 意 到 这个 程 序 缺 少 一 个 实 际 的 画 图 程 序 但 W ind ow s 已 经 提 供 了 Pa in tb ru s h 或 M S Pa in t
如 果 画 图 程 序 不 直 接 支 持 G IF 文 件 格 式 ( P a in tbrus h 及 M S P a in t 都 不 支 持
则 还 要 有 一 个 图 形 转 换 的 实 用 程 序 A lc h e m y M ind W o rk s 的 G ra ph ic s W o rk s hop 和 JA S C .In c 公 司 的 Pa in t S h o p P ro 都 是 出 色 的 图 形 转 换 程 序 这 两 家 厂 商 都 提供 产 品 的 共 享 软 件 版 本 可 以 在 前 面 注 释 中 提 供 的 In te rn e t 站 点 中 找 到 A lc h e m y M ind W o rk s 的 产 品 JA S C 产 品 则 出 现在各种 BBS 和 C o m puS erve 论坛上 你读到本书时 也许它们也有了自己 的 In tern e t 站点
打 开 G IF C ons truc tion S e t 首 先 可 以 看 到 的 是 F ile |O p e n 对 话 框 如 下 图 所
示
注 释 和 本 书 中 所 有 其 它 的 源 代 码 材 料 一 样 可 从 http://www .osborne.com 这 个 Osborne We b 站 点 下 载 TIME.GIF
请 注 意 该 目 录 下 已 经 有 了 几 个 G IF 文 件 T im e I t. G IF 是 你 在 图 8 .11 中 所看 到 的 静 态 文 件 T im e 0 .G IF 是 基 文 件 ─ ─ 创 建 动 画 效 果 使 用 的 空 白 文 件 创建 动 画 时 先 创 建 这 样 一 个 空 白 文 件 可 以 节 省 大 量 的 时 间 事 实 上 卡 通 作 家也 使 用 这 一 技 术 他 们 把 一 个 动 画 的 公 用 元 素 一 次 性 地 画 在 各 个 单 页 上 然 后将 它 们 组 合 起 来 就 构 成 动 画 只 有 那 些 唯 一 的 项 才 需 要 每 次 都 画 T im e 1 .G IF
到 T im e 12 .G IF 是 实 际 的 动 画 文 件 把 每 一 个 看 成 一 个 动 画 单 元 好 了
让 我 们 用 这 些 动 画 单 元 文 件 来 制 作 动 画 G IF 下 列 操 作 过 程 并 不 意 味 着 要把 你 束 缚 到 一 个 特 定 模 式 上 但 它 确 实 说 明 了 使 用 G IF C o ns truc tion S e t 制 作 G IF 的 一 种 方 法
-
用
F ile |N e w 命 令 创 建 一 个 新 的 G IF 你 将 看 到 如 下 图 所 示 的 空 白 G IF 对 话框 G IF C ons truc tio n S e t 总 是 假 定 使 用 标 准 的 640 480 像 素 的 显 示 区 我 们 需要 改 变 其 大 小
-
双 击 H ead e r 项 就 可 以 看 到 Ed it H e a d e r 对 话 框 如 下
图 所 示 这 个 对 话 框允 许 改 变 与 G IF 有 关 的 特 征 比 如 说 它 的 大 小
-
在
宽 度 和 高 度 域 中 键 入 新 的 大 小 使 之 与 图 像 的 大 小 相 匹 配 例 如 在 宽度 和 高 度 域 中 都 键 入 90 单 击 OK 使 改 变 生 效 并 保 留 下 来
-
单
击 M e rg e 按 钮 ( 或 用 B lo c k |M e rg e 命 令 ) 它 使 你 可 以 向 G IF 中 添 加 一 幅 图像 这 时 将 看 到 标 准 的 F ile |O p e n 对 话 框
-
双
击 你 想 在 动 画 中 使 用 的 第 一 个 文 件 在 本 例 中 双 击 T im e l .G IF 将 会 看到 P a lle te 调 色 板 对 话 框 如 下 图 所 示 用 于 本 图 形 的 调 色 板 与 G IF C o ns truc tio n Se t 使 用 的 标 准 调 色 板 并 不 匹 配
- 因
为 这 个 动 画 中 所 有 图 像 使 用 同 一 个 调 色 板 所 以 选 择 U s e T h is Im ag e as th e g loba l pa lle te 把 这 一 图 像 作 为 全 局 调 色 板 选 项 然 后 单 击 OK 就 完 成 了 这一 工 作 G IF C o ns truc tion S e t 将 把 一 个 新 的 图 形 插 入 到 G IF 中 如 下 图 所 示
如 果 单 击 Im a g e 项 就 会 看 到 图 像 的 实 际 副 本 此 时 我 们 无 须 关 心 该 软件 的 这 一 功 能 但 是 如 果 想 确 保 你 的 动 画 文 件 的 顺 序 不 乱 你 迟 早 就 会 用 到 它
- 单
击 M e rg e 按 钮 将 看 到 与 前 面 介 绍 过 的 F ile |O p e n 对 话 框 相 同 的 对 话 框
注 释 GIF Constr uction Set 的 某 些 版 本 在 Merge 按 钮 的 位 置 上 是 Manage 按 钮 但 你 仍 能 在 Block 菜 单 中 找 到 Merge 选 项 在 需 要 用 Merge 按钮 的 地 方 使 用 Block|Merg e 命 令 即 可 达 到 相 同 目 的
-
顺
次 选 择 下 一 图 像 并 单 击 OK 若 G IF C o n s truc tion S e t 再 次 询 问 调 色 板 设置 则 单 击 OK G IF 构 造 器 则 自 动 地 把 这 个 图 像 放 入 动 画 序 列 的 下 一 位 置
-
对
这 一 动 画 剩 余 的 G IF ( T im e 2 .G IF T im e 3 .G IF 等 等 ) 重 复 7 8 两 步 完 成后 对 话 框 如 下 图 所 示 请 注 意 这 12 个 图 像 的 次 序 现 在 要 插 入 一 些 控 件 以使 得 图 像 正 确 地 工 作
-
单 击 In s e rt 按 钮 看 到 In s e rt O b je c t 插 入 对 象
菜 单 如 下 图 所 示
这 一 菜 单 包 含 了 可 以 插 入 到 动 画 G IF 中 去 的 各 种 对 象 使 用 最 多 的 是 L oop
循 环 和 C on tro l 控 制
-
Loop
循 环 定 义 动 画 连 续 播 放 时 用 多 长 时 间 L oop 对 象 的 合 理 使 用 能 制造 出 一 些 相 当 有 趣 的 效 果 不 幸 地 是 许 多 浏 览 器 不 理 睬 这 一 特 定 项 所以 你 应 该 尽 量 少 用 它 若 浏 览 器 忽 略 L oop 对 象 则 它 只 是 简 单 地 保 持 动画 G IF 永 远 循 环 下 去
-
Control
控 制 能 改 变 动 画 G IF 的 行 为 例 如 可 以 使 用 一 个 C on tro l 设 置图 片 间 隔 时 间
-
Image
图 像 项 的 含 义 是 相 当 明 显 的 打 算 加 到 动 画 G IF 中 去 的 每 一 幅 图片 都 是 一 个 Im a g e 使 用 注 释 将 动 画 G IF 的 行 为 作 成 文 档 也 是 必 要 的 这在 你 允 许 他 人 使 用 这 个 动 画 G IF 时 显 得 尤 为 重 要
-
Plain
Text 明 文 很 简 单 这 种 文 本 将 在 动 画 中 作 为 一 部 分 显 示 出 来
-
在
In s e rt O b je c t 插 入 对 象 菜 单 选 择 L OOP 循 环 G IF C o n s truc t ion S e t 将自 动 地 把 它 放 到 H ead e r 项 之 下 然 后 在 每 两 个 图 片 之 间 放 上 C on tro l 对 象这 样 可 以 安 排 动 画 序 列 的 速 度 了
-
单
击 第 一 个 Im a g e 图 像 项 正 常 情 况 下 G IF C ons truc tio n S e t 把 下 一 个项 放 在 你 单 击 的 项 之 后
-
单
击 In s e rt 按 钮 从 In s e rt O b je c t 菜 单 中 选 择 C on tro l 则 会 看 到 一 个
C on tro l 项 添 加 到 了 列 表 中 如 下 图 所 示
-
单 击 下 一 个 Im a g e 项
-
对
每 一 个 Im a g e 项 重 复 13 14 步 这 些 都 完 成 后 对 话 框 则 如 下 图 所 示在 最 后 一 个 Im a g e 项 后 一 定 也 要 加 入 一 个 C on tro l 对 象 因 为 动 画 G IF 会
自 动 地 循 环 到 第 一 个 图 像 去
- 正 常 情 况 下 你 可 以 发 现 使 用 图 片 间 的 缺 省 时 间 间 隔 时
动 画 显 示 得 非 常 好但 是 还 是 让 我 们 看 一 看 改 变 设 置 时 需 要 做 些 什 么 双 击 最 后 一 个 C on tro l 对象 项 可 以 看 到 E d it C on tro l B loc k 对 话 框 如 下 图 所 示
-
最
常 用 的 项 是 D e la y 延 迟 域 使 用 它 可 以 控 制 动 画 的 速 度
-
T
ran sp aren t C o lo r 透明色 复选框的功能为 使得 在 G IF 之下出现的 内容都 在 使 用 某 种 特 殊 颜 色 显 示 的 G IF 所占 区 域 中显 示 出 来 单 击 该 按 钮 则 可以选择透明 色
-
W
a i t fo r U s e r Input 等 待 用 户 输 入 复 选 框 告 诉 动 画 在 这 点 上 暂 停 等 待用 户 输 入 某 种 信 息 通 常 是 用 户 击 一 个 键
-
R
e m o v e b y 用 ...... 删 除 域 允 许 你 确 定 一 旦 浏 览 器 显 示 这 一 动 画 单 元 之后 对 它 做 些 什 么 请 确 保 不 要 随 便 改 动 这 一 项 原 因 在 于 改 动 这 一 项 后在 某 些 浏 览 器 上 会 产 生 不 可 预 测 的 结 果
-
单 击
C a n cel 取 消 关 闭 对 话 框
-
为
了 观 看 整 个 动 画 单 击 V ie w 观 看 按 钮 键 入 ES C 键 退 出 浏 览 区
-
唯
一 还 没 完 成 的 事 是 保 存 动 画 G IF 文 件 使 用 F ile 文 件 |S a v e 保 存 命 令 来 完 成 即 可 可 以 用 任 意 文 件 名 但 本 例 把 它 保 存 为 T im e I t .G IF 随 后 的
HT M L 页 面 中 我 们 还 要 访 问 它
如 果 看 一 下 本 例 中 创 建 的 这 种 有 些 简 朴 的 动 画 文 件 的 大 小 就 会 发 现 它 也已 经 用 了 大 约 16 .7K B 的 内 存 这 差 不 多 是 这 一 页 内 存 预 算 的 三 分 之 一 这 时应 该 考 虑 一 下 动 画 增 加 这 么 多 的 内 存 负 担 是 否 值 得 ?
幸 运 的 是 还 有 一 种 方 法 处 理 这 一 问 题 双 击 任 一 个 Im a g e 图 像 对 象 项则 可 以 看 到 如 下 图 所 示 的 Ed it Im a g e 编 辑 图 像 对 话 框
请 留 意 Im ag e L e f t 图 像 左 端 和 Im ag e T o p 图 像 顶 部 域 它 们 允 许你 为 动 画 中 每 个 图 像 选 择 一 个 起 点 确 实 不 必 要 在 每 次 动 画 单 元 改 变 时 都 显 示
整 个 时 钟 必 须 要 做 的 仅 是 将 前 一 个 时 针 位 置 覆 盖 掉 并 用 系 列 中 的 下 一 个 时针 位 置 代 替 对 每 个 图 像 进 行 剪 裁 使 得 前 一 个 时 针 被 覆 盖 且 新 的 时 针 显 示 出来 这 样 能 把 动 画 G IF 的 大 小 减 少 75% 换 言 之 16 .7K B 的 文 件 将 减 少 到 4 .7K B 需 要 你 做 的 事 仅 仅 是 用 画 图 程 序 剪 裁 图 像 用 刚 讲 过 的 程 序 将 图 像 插 入 到 动 画G IF 文 件 中 然 后 使 用 Im ag e T o p 和 Im ag e L e f t 域 将 裁 过 的 图 像 正 确 地 放到 显 示 区 中 去 这 个 对 话 框 还 能 为 图 片 选 择 新 的 调 色 板 并 给 它 起 个 不 同 的 名称
技 巧 除 非 动 画 G I F 非 常 大 或 者 你 的 下 载 预 算 非 常 小 否 则 不 必 花 时 间对 每 个 图 像 都 单 独 地 进 行 剪 裁 例 如 这 里 的 样 本 G I F 只 要 它 是 页面 上 唯 一 的 图 像 就 会 工 作 得 很 好
In te rL a c e d 复 选 框 也 非 常 有 趣 如 果 这 个 G IF 设 计 成 静 态 图 像 就 应 该 选 中这 个 复 选 框 交 错 图 像 每 次 显 示 一 行 这 也 是 在 大 多 数 站 点 下 载 大 图 形 时 看 到的 效 果 使 用 交 错 图 形 可 以 在 下 载 过 程 中 给 用 户 一 点 可 视 反 馈 让 它 们 知 道没 有 死 机 对 于 动 画 G IF 则 不 要 选 这 个 框 因 为 显 示 交 错 图 像 用 的 时 间 更 多本 例 如 果 选 择 了 交 错 复 选 框 实 际 上 会 使 动 画 看 起 来 好 象 是 指 针 在 跳 跃
- 7 使 用 DI AN TZ .E XE 创 建 组 件 下 载 (C AB ) 文 件
前 面 谈 到 过 将 A c tiv e X 控 件 放 入 CA B 文 件 后 可 以 节 省 用 户 的 时 间 这 种文 件 格 式 使 得 在 一 次 下 载 中 可 以 传 送 多 个 文 件 并 同 时 完 成 文 件 压 缩 创 建 CA B
文 件 不 一 定 十 分 困 难 但 是 在 投 入 产 品 环 境 中 使 用 之 前 一 定 要 彻 底 测 试 它
注 释 你 可 能 会 看 到 提 到 DIANTZ.EXE 文 件 时 根 据 你 是 在 看 什 么 资 源 还 会 用 另 外 两 个 名 称 中 的 一 个 来 称 呼 它 Visual Basic 用 户 把 这 个实 用 程 序 称 之 为 MAKECAB.EX E ActiveX SDK 的 一 些 版 本 则 有 一 个 名为 DIAMOND.EX E 的 实 用 程 序 无 论 你 使 用 的 实 用 程 序 名 称 是 什 么 目的 却 都 是 创 建 C A B 文 件 你 能 用 它 们 来 发 布 你 的 应 用 程 序
第 一 步 是 确 定 要 把 哪 些 文 件 发 送 给 用 户 例 如 用 户 在 使 用 其 它 程 序 时也 许 拥 有 了 全 部 M F C M ic ros oft 基 础 类 库 文 件 这 样 就 不 要 让 他 们 浪 费 时 间一 遍 又 一 遍 地 下 载 这 些 文 件 在 大 多 数 情 况 下 要 把 自 己 的 W e b 站 点 上 的 文 件都 限 制 为 独 一 无 二 的
第 二 步 创 建 IN F 文 件 包 括 这 个 文 件 的 理 由 有 下 列 几 条 第 一 条 是 它 能包 含 安 装 指 令 从 而 使 用 户 的 工 作 更 容 易 而 且 也 会 减 少 你 的 支 持 电 话 另 一条 是 它 包 含 了 一 些 公 用 文 件 A c tiv e X 控 件 需 要 这 些 文 件 但 不 一 定 要 作 为 CA B 文 件 的 一 部 分 下 载 你 能 够 预 先 把 下 载 这 些 文 件 的 指 令 包 括 进 去 当 用 户 确 实需 要 这 些 文 件 时 就 可 以 从 你 的 In te rn e t 站 点 上 下 载 它 们 浏 览 器 中 的 In te rn e t 组 件 下 载 服 务 部 分 并 不 懂 得 所 有 的 IN F 文 件 规 范 它 只 能 使 用 其 标 准 元 素 的一 个 子 集 表 8 .2 列 出 了 其 中 可 用 的 元 素 以 及 运 用 它 们 时 的 使 用 顺 序
表 8.2 In te rn e t 组件下载 服务使用的 IN F 文件格式
项目 |
描述 |
---|---|
[ A dd .C ode ] | |
< F i le na m e 1> = < S e c tio n - N a m e 1 > < F i le na m e 2> = < S e c tio n - N a m e 2 > < F i le na m e n> = < S e c tio n - N a m e n > |
[A D D . C o d e ] 节 提 供 了 要 安 装 文 件 的 完 整 列 表 它 并 非 包 含了 IN F 文件中的 全部文件 原 因在于你并不 希望把 IN F 文件 安 装 成 最 小 模 式 项 目 的 < S e c tio n - N a m e > 部 分 告 诉 因 特 网组 件 下 载 服 务 到 什 么 地 方 寻 找 包 含 在 特 定 文 件 中 的 安 装 指令 参见下 节 |
[ S e c tio n - N a m e 1 ] | |
K e y 1 = V a lu e 1 K e y 2 = V a lu e 2 K e y n = V a lu e n |
文件 中 的 每个 特 定 节都 由 一 个或 多 个 关键 字 组 成 这 些 关 键 字就象以 前在 IN I 文件中使 用过的关键字 一样 跟随其 后的元素则指 定了 In te rn e t 组件下载 服务能理解的 关键字的值 |
F ile = [< U R L > | T h is CA B] |
这个关 键字指 出 是 从 In te rn e t 的一个 具体地 址下载 文件还是从这 个 CA B 文件中提 取文件 对于 A c tiv e X 控件需要但未 包括 到 CA B 文 件 中 去 的那 些文 件 使 用 这 一 关 键 字 可以 定 义 出它 们 的 位置 通 常 情 况 下 这 些 附 加 支 持 文 件 存 放在 In te rn e t 服务器中 |
续 表
F ile V e rs io n = <a > ,< b > ,<c > ,<d> |
这个 关 键 字指 明 了 某文 件 可 接受 的 最 小版 本 号 如 果 不 指 定一个值 则 In te rn e t 组件下 载服 务认为 任意版 本都可 以 每个 字 母 指 定 版 本 的 一 个 层 次 所 以 若 控 件 版 本 为 1 .0 则 使 用 V e rs ion=1 ,0 ,0 ,0 |
---|---|
F ile - [ M a c | W in32 ]- [ x86 |P P C │ M ips |A lpha ]= [< UR L > |IGNOR E ] |
这个 关 键 字让 你 对 各种 平 台 所需 的 支 持加 以 区 分 先 定 义 操作系统 然后 是 CP U 类型 <U R L > 参数 则可以指 定一个文 件位置 IGNO R E 参数 则告诉 In te rn e t 组件 下载服务 该文件 对于指 定的平台 并不是必 要的 |
CL S ID = [< C la s s ID > ] |
这个 关 键 字让 你 定 义文 件 的 类标 识 符 你 没 有 必 要 实 际 创 建CL S ID 因为 V is u a l C + + 根据 M ic ro s o f t 研究的一 个复杂公式自动地 完成这一步工 作 从两个地方可 以得到这个值 C+ + 源代码和 W indow s 注册表 为了在 W indo w s 注册表中 找到它 只 要 打 开 注 册 表 编 辑 器 用 E d it |F in d 命 令 在HKE Y _ C L AS S E S _ R O OT |C L S ID 关键字下 寻找 OC X 文件名 即 可 第 二 章 示 例 中 的 CL S ID 的 注 册 项 是 { D 8D 77 E 0 3 - 712 A - 1 1 C E - 8 C 7 0 - 0 0 00 6E 31 2 7 B 7 } C+ + 源 代 码 的 位 置 在 控 制 文 件 中 例 如 第 二 章 中 的 源 代 码 文 件 是 OC XE X M P L C T L .C P P 可以用 这样的调用找 到标识符 ////////////////////// 初始化类 工厂和指南 |
续 表
IM P L EM EN T _ O LEC R E A T E_ EX ( C O C X E X M P L C tr l ," O C X E X M P L . OC XE XM P - L C tr l .1 " , 0xd 8d 77 e 0 3 ,0x 71 2 a , 0 x 1 1c f ,0 x 8c , 0 x 7 0 ,0 ,0 ,0 x 6 e ,0 x3 1 ,0 x27 ,0 x b 7 ) ////////////////////////////////////////// A c tiv e X 控件的 CL S ID 值不会改 变 除非对 于像名称这样 非 常 基 本 的 东 西 进 行 改 变 ─ ─ 代 码 改 变 无 效 , 所 以 只 需 找 到这个值一 次即可 |
创 建 IN F 相 当 简 便 确 实 需 要 做 的 是 你 要 想 清 楚 需 要 包 括 什 么 以 及 它们 的 位 置 程 序 列 表 8 .13 展 示 的 是 安 装 两 个 文 件 的 典 型 IN F 文 件 第 一 个 文 件OC XE XM P L . O C X 实 际 存 放 在 CA B 中 用 户 还 需 要 M F C 40 .D L L 但 有 可 能已 经 安 装 到 客 户 机 中 了 例 子 中 包 括 了 在 In te rn e t 服 务 器 上 找 到 这 个 文 件 的 一 个站 点 只 有 在 客 户 机 上 没 有 安 装 这 个 所 需 文 件 时 这 个 站 点 才 会 有 用 创 建 了文 件 列 表 和 IN F 文 件 后 还 要 创 建 D ia m ond D ire c tiv e F ile ( D D F ) D IA N TZ .EX E 创 建 CA B 文 件 时 要 用 到 它 这 个 文 件 的 格 式 不 难 理 解 程 序 列 表 8 .14 是 创 建DDF 的 一 个 典 型 例 子
程 序 列 表 8.13
;O C X E X M P L .O C X 的 IN F F ile
[ A dd .C ode ]
OC XE X M P L .O C X = O C X E X M P L .OC X
M F C 40 .D L L = M F C 40 .D L L
[ O C X E X M P L .OC X]
F ile = th is c a b
C ls id= [ D 8 D 7 7 E 0 3- 7 12A - 1 1C F - 8C 7 0 - 0 00 06E 31 27B 7]
F i le V e rs io n= 1 ,0 ,0 ,0
[ M C F 40 .D L L ]
F ile = h ttp ://a u x /file s /M F C 4 0 .D L L F i le V e rs io n= 4 .0 .0 .5
程 序 列 表 8.14
;D ia m o n d 命令文件 生 成变量类型错误 的完全列表
.O PT IO N E X PL IC IT
; 定义 CA B 文件的名 称
.S E T C A B IN E T N A M ETEM P L A T E= A c t iv e x . C A B
; 创建一个 cab in e t
.S ET C A B IN E T= O N
; 压缩这个 文件
.S E T CO M P RE S S = O N
; 文件列表
In s ta l l .IN F F ile 1 .O C X file 2 . O C X ù
— 旦 做 到 这 一 步 创 建 CA B 文 件 就 不 困 难 了 只 需 使 用 下 列 命 令 行 即 可
D IANT AZ / F M Y .DDF