第 二 十 五 章 使 用 HTML 元 素 编 写 脚 本
即 便 你 在 Web 页 面 中 不 使 用 设 计 期 间 控 件 还 可 以 使 用 创 建 和 编 写 HTML 元素 脚 本 的 办 法 创 建 全 功 能 Web 应 用 做 这 件 事 不 涉 及 使 用 设 计 期 间 控 件 这 对下 述 情 况 是 有 用 的 如 果 你 愿 意 亲 自 编 写 HTML 元 素 的 脚 本 或 者 如 果 你 工 作 所使 用 的 页 面 是 与 非 Visual Int erDev 的 应 用 共 享 的 页 面
对 专 门 任 务 创 建 脚 本 通 常 意 味 着 你 一 定 要 了 解 各 个 Web 页 面 的 不 同 元 素 如何 配 合 在 一 起 以 及 浏 览 器 和 服 务 器 如 何 相 互 作 用 此 外 还 必 须 了 解 不 同 脚本 环 境 的 能 力 例 如 知 道 脚 本 是 否 运 行 在 某 些 浏 览 器 上
25 . 1 选 择 脚 本 语 言
Visual InterDev 允 许 你 使 用 你 觉 得 最 方 便 的 脚 本 语 言 设 计 Web 应 用 你的 应 用 可 以 包 含 使 用 VBScript 和 JScript 的 混 合 文 件 你 甚 至 可 以 在 同 一 个页 面 上 使 用 不 同 的 语 言 但 是 在 一 个 单 个 脚 本 块 中 的 脚 本 必 须 包 含 一 种 单 一 的语 言
为 脚 本 块 设 置 脚 本 语 言
- 在
<SCRIPT> 块 中 把 LANGUAGE 属 性 设 置 为 你 希 望 为 那 个 脚 本 所 使 用 的
语 言 如 下 边 例 子 所 示
<SCRIPT LA NGUAGE= VBSCript >
[some s cripting statemets h ere]
</SCRIPT>
如 果 你 没 为 脚 本 块 设 定 一 种 语 言 Microsoft Internet 信 息 服 务 器
IIS 为 服 务 器 脚 本 运 行 的 默 认 语 言 就 是 服 务 器 设 置 的 语 言 通 常 是VBScript 对 于 客 户 脚 本 默 认 语 言 由 浏 览 器 决 定 大 多 数 浏 览 器 都 使 用JavaScript 作 为 它 们 的 默 认 语 言 Microsoft Internet Explo rer 承 认 把JavaSctipt 作 为 它 的 默 认 语 言 但 是 却 把 当 前 页 面 的 默 认 重 新 设 置 成 它 在
<SCRIPT> 块 中 遇 到 的 第 一 个 LANGUAGE 属 性 (attribute ) 在 第 一 个 LANGUAGE 属性 之 后 不 再 重 新 设 置 默 认 语 言
为 AS P 文 件 选 择 语 言
因 为 ASP 页 面 中 可 以 有 不 在 <SCRIPT> 块 内 的 内 联 脚 本 因 而 这 些 页 面 提 供对 整 个 页 面 重 新 设 置 默 认 语 言 的 手 段 在 每 个 ASP 页 面 的 顶 部 < %@LANGUAGE =% > 指 令 规 定 默 认 脚 本 语 言 你 可 以 手 动 改 变 这 种 设 置 也 可 以 通 过 设 置 属 性 值 的办 法 改 变
改 变 A S P 文 件 的 脚 本 语 言
1 . 在 编 辑 器 中 不 做 选 择 在 View 菜 单 中 选 择 Property P ages
- 在 Property Pages 对 话 框 中 选 择 General 选 项 卡 然 后 在 Default scripting language 之 下 选 择 Server 列 表 中 的 语 言
设 计 期 间 控 件 还 使 用 这 个 LANGUAGE 指 令 了 解 将 使 用 什 么 语 言 生 成 脚 本 如果 你 在 一 个 文 件 中 删 除 < %@LANGUAGE =% > 指 令 Visual InterDev 将 使 用 当 前 在Properties 对 话 框 中 规 定 的 语 言 为 页 面 生 成 脚 本 此 外 当 这 些 页 面 在 Web 服务 器 上 运 行 的 时 候 它 们 将 使 用 Web 服 务 器 记 录 中 ASP 条 目 下 的DefaultScr iptLanguage 参 数 中 设 置 的 语 言 进 行 处 理
注 意 : 如 果 你 有 一 些 页 面 上 面 没 有 < % @ LANG UAGE=% >指 令 就 要 保 证 在Options 对 话 框 中 你 的 语 言 设 置 同 服 务 器 上 默 认 语 言 设 置 一 样 否 则控 件 生 成 的 代 码 语 言 是 错 误 的
你 可 以 为 创 建 的 所 有 新 ASP 页 面 设 置 默 认 语 言
为 新 A S P 页 面 重 新 设 置 默 认 脚 本 语 言
1 . 右 键 单 击 Project Ex plorer 中 的 一 个 项 目 然 后 选 择 Properties 2. 在 Property P ages 对 话 框 中 选 择 Editor Def aults 选 项 卡
- 在
Default script language 之 下 在 server 列 表 中 选 择 你 希 望 的 语 言如 果 你 改 变 默 认 脚 本 语 言 你 创 建 的 新 文 件 将 反 映 这 种 改 变 但 是 在 你 已
经 选 择 的 文 件 中 规 定 的 语 言 将 不 改 变
为 Gl ob al .a sa 文 件 选 择 语 言
在 创 建 一 个 新 项 目 的 时 候 你 在 Options 对 话 框 中 规 定 默 认 脚 本 语 言 用 于定 义 Global.asa 文 件 中 的 事 件 你 可 以 改 变 用 于 这 些 事 件 的 语 言
改 变 Global.asa 文 件 使 用 的 脚 本 语 言
1 . 在 编 辑 器 中 打 开 Global.asa 文 件
- 在 每 个 脚 本 块 中 改 变 LANGUAGE 属 性
为 生 成 的 脚 本 选 择 语 言
如 果 是 手 动 编 写 脚 本 你 可 以 使 用 上 述 过 程 设 置 你 自 己 的 脚 本 语 言 然 而你 还 可 以 为 你 使 用 Script Outline 脚 本 大 纲 窗 口 生 成 的 脚 本 设 置 默 认 脚 本语 言
改 变 已 生 成 脚 本 的 脚 本 语 言
1 . 在 编 辑 器 中 不 做 选 择 在 View 菜 单 中 选 中 Property P ages 2. 在 Property P ages 对 话 框 中 选 中 General 选 项 卡
- 在 Default sc ripting language 之 下 为 客 户 或 服 务 器 脚 本 选 择 默 认 语
言
注 意 : 这 种 改 变 只 影 响 新 脚 本 不 影 响 已 经 有 的 脚 本
你 还 可 以 改 变 为 整 个 项 目 改 变 脚 本 生 成 的 默 认 语 言
为 新 A S P 页 面 重 新 设 置 默 认 脚 本 语 言
1 . 右 键 单 击 Project Ex plorer 中 的 项 目 然 后 选 择 Properties 2. 在 Property P ages 对 话 框 中 选 中 Editor Def aults 选 项 卡
- 在 Default sc ripting language 之 下 为 客 户 或 服 务 器 脚 本 选 择 默 认 语
言
注 意 : 这 种 改 变 只 影 响 新 脚 本 不 影 响 已 经 有 的 脚 本
25 .2 用 HT ML 元 素 处 理 事 件
你 可 以 通 过 编 写 响 应 事 件 脚 本 的 办 法 规 定 HTML 元 素 在 页 面 上 表 现 如 何 例如 你 可 以 编 写 客 户 脚 本 以 便 在 下 列 情 况 下 使 变 量 初 始 化 在 装 载 文 档 时 窗口 事 件 的 onload 事 件 在 用 户 向 文 本 框 中 键 入 文 本 时 文 本 框 的 onchange 事件 或 用 户 敲 击 按 钮 时 按 钮 的 onclick 事 件
注 意 : 把 对 象 加 到 你 应 用 上 或 为 应 用 编 写 脚 本 的 最 容 易 的 方 式 是 使 用 微 软Visual I nterDev 设 计 期 间 控 件 有 关 细 节 参 见 第 二 十 四 章 用 设计 期 间 控 件 和 脚 本 对 象 编 写 脚 本 中 的 用 设 计 期 间 控 件 创 建 窗 体和 为 脚 本 对 象 编 写 脚 本
你 编 写 作 为 过 程 的 事 件 处 理 程 序 功 能 或 子 程 序 这 些 过 程 出 现 在 你 页 面中 的 特 定 <SCRIPT> 块 中 要 规 定 一 个 过 程 是 一 个 特 定 事 件 的 处 理 程 序 你 可 以
-
创 建 隐 含 处 理 程 序 办 法 是 为 处 理 程 序 对 应 事 件 之 后 的 过 程 命 名
-
使 用 对 象 或 脚 本 属 性 使 过 程 同 事 件 显 示 相 关
如 果 你 正 使 用 微 软 Visual Basic Script Edition 你 可 以 创 建 作 为 子 程序 或 功 能 的 过 程 如 果 你 希 望 返 回 或 设 置 过 程 的 值 可 使 用 功 能 在 一 些 情 况下 消 除 事 件 的 影 响
创 建 隐 含 处 理 程 序
隐 含 处 理 程 序 使 用 命 名 约 定 把 该 句 柄 链 接 到 对 象 或 事 件 上
创 建 隐 含 处 理 程 序
1 . 在 Script Outline 脚 本 大 纲 窗 口 中 扩 展 节 点 这 个 节 点 包 含 你 希 望为 之 编 写 脚 本 的 对 象
注 意 : 只 当 脚 本 大 纲 的 I D 或 NAME 属 性 (attribute ) 被 设 置 的 时 候对 象 才 出 现 在 脚 本 大 纲 窗 口 中 只 当 窗 体 的 I D 或 NAME 属 性 被设 置 的 时 候 对 象 才 出 现 在 一 种 窗 体 中
-
扩 展 项 目 的 名 字
-
双
击 你 希 望 为 之 编 写 处 理 程 序 的 事 件 名 字编 辑 器 用 下 述 窗 体 创 建 骨 架 处 理 程 序
function objectName _event
例 如 如 果 你 的 页 面 包 含 一 种 窗 体 这 种 窗 体 有 一 个 称 为 btnNext 的 按 钮则 使 用 名 字 btnNext_on click 创 建 处 理 程 序 如 果 你 创 建 一 个 JavaScript 处 理程 序 编 辑 器 还 把 一 个 事 件 属 性 加 到 你 编 写 脚 本 的 控 件 上 有 关 细 节 参 见 下一 节 使 用 属 性 创 建 处 理 程 序
处 理 程 序 是 在 下 列 各 <SCRIPT> 块 中 的 一 个 块 内 创 建 的 具 体 是 哪 个 块 取决 于 你 是 为 客 户 对 象 创 建 处 理 程 序 还 是 为 服 务 器 对 象 创 建 处 理 程 序 以 及 这 个对 象 的 默 认 语 言 是 什 么
-
clientEven tHandlersJS
-
clientEven tHandlersVBS
-
serverEven tHandlersJS
-
serverEven tHandlersVBS
对 于 生 成 脚 本 设 置 默 认 语 言 的 细 节 参 见 本 章 前 边 的 选 择 脚 本 语 言
创 建 骨 架 之 后 你 就 可 以 填 充 它 例 如 下 边 对 应 于 名 为 txtName 文 本 框的 客 户 脚 本 功 能 是 在 用 户 敲 击 按 钮 时 或 离 开 时 调 用 的
如 果 你 正 在 VBScript 中 编 写 脚 本 你 可 以 消 除 一 些 事 件 的 影 响 例 如 你可 以 为 窗 体 的 onsubmit 提 交 事 件 编 写 处 理 程 序 而 这 个 事 件 在 用 户 敲 击Submit 按 钮 时 出 现 你 的 脚 本 可 以 检 查 数 据 是 否 有 效 如 果 无 效 就 注 销onsubmit 事 件 有 关 是 否 能 注 销 一 个 事 件 的 细 节 参 见 你 所 使 用 的 事 件 文 档
消 除 事 件 的 影 响
- 创
建 作 为 功 能 的 VBScript 过 程 并 把 该 功 能 返 回 值 设 置 为 False 假 如 下 边 脚 本 所 示
使 用 属 性 (a tt ri bu te) 创 建 处 理 程 序
把 一 个 过 程 链 接 到 一 个 事 件 上 的 另 外 一 种 方 式 是 设 置 对 象 的 属 性 或 脚 本 的属 性 显 式 把 两 者 链 接 起 来
设 置 对 象 属 性 ( a t t r i b u t e )
在 创 建 一 个 对 象 的 时 候 你 可 以 设 置 一 个 属 性 用 于 把 一 个 处 理 程 序 分 配给 这 个 对 象
使 用 属 性 把 处 理 程 序 分 配 给 事 件
- 在
创 建 对 象 的 标 记 中 给 事 件 命 名 并 把 过 程 分 配 给 事 件 所 使 用 的 语法 如 下
<INPUT TYPE= ” ObjectType ” LANGUAGE= ” language ” EventNmame= ” Procedure ” >
-or-
<FORM LANG UAGE= ” language ” NAME= ” FormName ” EventName = ” Procedure ” >
这 种 语 言 属 性 并 不 是 所 要 求 的 但 可 以 保 证 处 理 程 序 将 以 你 希 望 的 方 式 进行 工 作 如 果 不 规 定 语 言 便 承 认 页 面 的 默 认 语 言
例 如 下 边 的 页 面 包 含 带 有 两 个 按 钮 的 一 种 窗 体 每 个 按 钮 都 明 确 规 定 把
onclick 事 件 链 接 到 一 个 过 程 上
在 客 户 脚 本 中 对 于 像 窗 口 对 象 这 样 不 是 明 显 使 用 标 记 创 建 出 来 的 对 象要 使 用 <BODY> 标 记 如 下 边 的 例 子 所 示
设 置 脚 本 属 性
链 接 对 象 和 处 理 程 序 的 另 外 一 种 方 式 是 设 置 脚 本 的 属 性 (attribute ) 并 把这 个 脚 本 分 配 给 一 个 事 件
使 用 脚 本 属 性 把 脚 本 分 配 给 事 件
- 在
<SCRIPT> 标 记 中 使 用 FOR 属 性 标 识 对 象 使 用 EVENT 属 性 标 识 事 件所 使 用 的 语 法 是
你 可 以 对 任 何 命 名 的 元 素 和 用 <OBJECT> 标 记 插 入 的 元 素 使 用 这 种 方 法 你不 需 要 创 建 作 为 子 程 序 或 功 能 的 脚 本 因 为 脚 本 属 性 规 定 脚 本 什 么 时 间 运 行
下 边 的 例 子 同 以 前 的 例 子 类 似 但 是 它 使 用 一 种 不 同 语 法
25 .3 用 HT ML 窗 体 收 集 信 息
提 示 用 户 给 出 信 息 的 常 见 方 式 是 把 一 种 窗 体 放 到 页 面 上 用 户 可 以 键 入 信息 也 可 以 使 用 文 本 框 选 择 按 钮 下 拉 列 表 和 复 选 框 选 择 信 息 然 后 用 户 用
敲 击 按 钮 的 办 法 提 交 窗 体 信 息 随 之 变 得 对 你 的 应 用 可 用你 可 以 用 下 述 方 式 定 义 窗 体
-
使
用 Visual InterDev 设 计 期 间 控 件 然 后 为 它 们 的 时 间 编 写 处 理 程序 这 种 方 法 允 许 你 同 你 的 窗 体 控 件 进 行 可 视 性 工 作 并 把 面 向 对 象的 技 术 用 于 脚 本 编 程 这 种 方 法 还 能 很 容 易 地 把 控 件 绑 定 在 数 据 库 上
-
创
建 一 种 HTML 窗 体 这 是 创 建 窗 体 的 传 统 HTML 方 式 如 果 你 想 用 Visual InterDev 以 外 的 工 具 编 辑 页 面 你 就 可 以 使 用 这 种 方 法
使 用 设 计 期 间 控 件 是 很 容 易 的 也 是 强 而 有 力 的 因 为 这 种 方 式 允 许 你 使用 脚 本 目 标 模 型 进 行 窗 体 设 计 关 于 使 用 设 计 期 间 控 件 和 脚 本 对 象 模 型 的 有 关内 容 参 见 第 二 十 四 章 用 设 计 期 间 控 件 和 脚 本 对 象 编 写 脚 本 中 的 用 设 计期 间 控 件 创 建 窗 体
下 边 几 节 描 述 以 传 统 方 式 如 何 创 建 HTML 窗 体 并 用 这 种 窗 体 进 行 工 作
定 义 HT ML 窗 体
使 用 <FORM> 标 记 创 建 一 种 HTML 窗 体
注 意 : 不 要 把 HTML 窗 体 加 到 包 含 Visual Int erDev 设 计 期 间 控 件 的 页 面 上因 为 这 种 页 面 已 经 包 含 用 于 管 理 这 些 控 件 的 窗 体 有 关 细 节 参 见 第二 十 四 章 用 设 计 期 间 控 件 和 脚 本 对 象 编 写 脚 本 中 的 用 设 计 期 间控 件 创 建 窗 体
创 建 HTML 窗 体
1 . 选 择 你 希 望 包 含 在 窗 体 中 的 文 本 然 后 从 HTML 菜 单 中 选 择 Form
编 辑 器 把 <FORM> 和 </FORM> 标 记 放 到 你 所 选 文 本 的 两 边 窗 体 的 ID 和 NAME
属 性 自 动 分 配 唯 一 的 值 如 果 你 希 望 的 话 这 些 值 可 以 改 变
注 意 : 如 果 你 把 已 经 有 的 HTML 控 件 放 到 一 种 窗 体 中 这 些 控 件 就 出 现 在 窗体 节 点 的 Script Out line 脚 本 大 纲 窗 口 中
- 规 定 .asp 文 件 的 名 字 这 个 文 件 用 于 处 理 窗 体 并 为 窗 体 分 配 ACTION
属 性
<FORM NAME = FormName ACTION= ASPFileNam e .asp > 3. 规 定 窗 体 信 息 如 何 用 METHOD 属 性 发 送 给 服 务 器
<FORM NAME= FormName ACTION = ASPFileNam e.asp METHOD= method >
想 发 送 HTML 抬 头 的 部 分 信 息 以 便 使 用 服 务 器 Request 对 象 的 Forms 集
合 提 取 就 要 把 METHOD 设 置 成 POST
想 把 字 符 串 信 息 发 送 给 .asp 文 件 以 便 可 以 使 用 服 务 器 Request 对 象 的
QueryStrin g 集 合 提 取 就 要 把 METHOD 设 置 成 GET
在 定 义 窗 体 之 后 你 就 可 以 定 义 控 件 如 文 本 框 按 钮 等 等
注 意 : 可 以 使 用 设 计 期 间 控 件 为 你 的 应 用 创 建 用 户 界 面 有 关 细 节 参 见 第二 十 四 章 用 设 计 期 间 控 件 和 脚 本 对 象 编 写 脚 本 中 的 用 设 计 期 间控 件 创 建 窗 体
在 窗 体 中 创 建 控 件
- 把 控 件 从 Toolbox 的 HTML 选 项 卡 上 拖 到 页 面 上
控 件 的 ID 和 NAME 属 性 自 动 分 配 唯 一 的 值 如 果 你 希 望 可 以 改 变 这 些 值 注 意 : 当 你 把 HTML 控 件 拖 到 HTML 窗 体 上 的 时 候 这 些 控 件 出 现 在 窗 体 节 点
Script Out line 脚 本 大 纲 窗 口 中
例 如 一 种 窗 体 包 含 文 本 框 和 Submit 提 交 按 钮 在 你 把 这 些 控 件 从
Toolbox 拖 出 并 进 行 编 辑 之 后 看 上 去 像 下 边 的 样 子
提 交 之 前 处 理 窗 体 信 息
在 简 单 窗 体 中 在 客 户 机 上 不 要 求 处 理 用 户 敲 击 Submit 提 交 按 钮 而浏 览 器 完 成 收 集 数 据 的 任 务 并 把 数 据 发 送 给 服 务 器 然 后 你 可 以 通 过 编 写脚 本 处 理 按 钮 敲 击 等 来 实 现 对 窗 体 的 处 理
典 型 的 例 子 是 编 写 一 个 脚 本 对 用 户 的 数 据 进 行 验 证 然 后 把 窗 体 寄 送 出去 但 是 在 客 户 脚 本 中 你 对 激 发 所 有 窗 体 控 件 的 时 间 拥 有 访 问 权 这 样 你 便可 以 对 你 需 要 的 任 何 目 的 包 括 替 换 服 务 器 的 全 面 处 理 编 写 处 理 程 序
注 意 : 脚 本 对 象 模 型 允 许 你 轻 松 编 写 设 计 期 间 控 件 的 脚 本 有 关 细 节 参 见第 二 十 四 章 用 设 计 期 间 控 件 和 脚 本 对 象 编 写 脚 本 中 的 用 脚 本 对象 编 写 脚 本
处 理 客 户 脚 本 中 的 窗 体
- 为
下 列 事 件 编 写 处 理 程 序 窗 体 的 onsubmit 提 交 事 件 或 同 单 个控 件 有 关 的 事 件 如 按 钮 敲 击 事 件 或 文 本 框 onblur 变 模 糊 事 件
想 确 定 特 定 控 件 的 值 你 就 要 引 用 一 个 层 次 对 象 这 个 对 象 来 自 控 制 属 性的 有 窗 体 文 档
下 边 给 出 一 个 简 单 验 证 例 程 这 个 例 程 在 一 种 窗 体 的 onsubmit 事 件 处 理 程
序 中
要 为 其 它 事 件 编 写 处 理 程 序 你 可 以 使 用 脚 本 大 纲 Script Outline 窗 口 关 于 为 同 HTML 窗 体 控 件 有 关 的 事 件 编 写 脚 本 更 多 内 容 参 见 本 章 前 边 用HTML 元 素 处 理 事 件
处 理 服 务 器 上 的 窗 体
在 Visual Int erDev 中 窗 体 通 常 用 服 务 器 上 的 .asp 文 件 处 理
处 理 服 务 器 脚 本 中 的 窗 体
- 在
目 标 ASP 页 面 上 使 用 服 务 Request 对 象 的 Forms 窗 体 集 合 从 窗体 中 提 取 值
窗 体 集 合 像 一 个 数 列 里 面 有 窗 体 中 所 有 控 件 的 值 你 可 以 用 Forms 集 合中 的 名 字 引 用 它 们 来 提 取 单 个 控 件 的 值
例 如 下 边 脚 本 使 用 在 窗 体 中 分 配 给 <INPUT> 标 记 的 名 字 提 取 窗 体 上 一 些 字段 的 值 再 把 这 些 值 放 到 Session 会 话 对 象 变 量 中 以 便 被 其 它 地 方 的 应用 所 使 用
在 隐 蔽 字 段 中 创 建 动 态 信 息
如 果 你 希 望 传 递 不 是 由 用 户 直 接 键 入 的 信 息 则 可 以 使 用 隐 蔽 字 段
注 意 : 如 果 你 使 用 脚 本 对 象 模 型 和 设 计 期 间 控 件 信 息 在 服 务 器 脚 本 中 是 自动 可 用 的 有 关 更 多 内 容 参 见 第 二 十 四 章 用 设 计 期 间 控 件 和 脚 本对 象 编 写 脚 本 中 的 用 设 计 期 间 控 件 创 建 窗 体
在 隐 蔽 字 段 中 创 建 信 息
1 . 在 一 个 窗 体 中 创 建 <INPUT> 标 记 并 把 它 的 TYPE 属 性 设 置 为 HIDDEN
如 下 边 例 子 所 示
2. 使 用 客 户 脚 本 把 信 息 放 到 隐 蔽 字 段 中
例 如 你 可 以 用 为 窗 体 onsubmit 提 交 事 件 编 写 的 句 柄 提 交 窗 体 在 刚好 提 交 窗 体 之 前 装 载 这 个 隐 蔽 字 段 下 边 例 子 就 是 把 当 前 时 间 放 到 隐 蔽 字 段 中
在 提 交 窗 体 的 时 候 你 可 以 使 用 服 务 器 脚 本 提 取 隐 蔽 字 段 的 信 息 其 方 式与 你 从 任 何 其 它 窗 体 元 素 中 提 取 信 息 一 样 如 下 边 例 子 所 示
向 同 一 个 文 件 寄 送 信 息
为 取 代 总 是 创 建 一 个 单 独 的 .asp 文 件 处 理 一 种 窗 体 的 .htm 文 件 内 容 你可 以 把 窗 体 和 处 理 这 个 窗 体 的 脚 本 放 到 同 一 个 ASP 页 面 上 这 样 可 以 简 化 你 的应 用 并 使 得 用 户 更 轻 松
例 如 一 种 典 型 情 况 是 有 三 个 或 更 多 个 与 同 一 种 窗 体 相 关 的 页 面 一 个 页面 带 有 窗 体 另 一 个 页 面 带 有 处 理 这 个 页 面 的 脚 本 第 三 个 页 面 带 有 错 误 报 文然 而 如 果 这 种 窗 体 寄 送 给 持 续 显 现 的 文 件 上 你 可 以 把 信 息 报 文 连 同 窗 体 环境 一 起 寄 送 出 去 并 且 只 需 创 建 一 个 页 面
向 同 一 个 文 件 寄 送 信 息
1 . 在 .asp 文 件 中 创 建 窗 体
-
在 窗 体 的 ACTION 属 性 中 规 定 作 为 目 标 URL 的 文 件 名 字
-
在
服 务 器 中 .asp 文 件 的 顶 部 用 Request 请 求 对 象 检 查 信 息 是 否 传递 到 该 文 件 如 果 传 递 到 了 窗 体 已 经 提 交 了 你 就 可 以 处 理 它 否 则假 设 这 个 窗 体 第 一 次 显 示 出 来
下 边 的 GetEmail.a sp 文 件 就 是 这 样 的 例 子 脚 本 决 定 用 户 是 否 已 经 键 入 电子 邮 件 地 址 如 果 键 入 了 检 查 这 个 地 址 是 否 有 效 在 每 一 种 情 况 中 脚 本 都产 生 相 应 的 报 文 然 后 报 文 出 现 在 窗 体 下 边 作 为 对 用 户 的 反 馈
25 .4 为 用 户 显 示 信 息
Web 页 面 填 充 用 户 信 息 但 是 这 些 信 息 大 部 分 都 是 静 态 的 你 可 以 使 用 脚本 为 用 户 显 示 动 态 信 息
从 客 户 脚 本 显 示 信 息
因 为 客 户 脚 本 在 浏 览 器 上 运 行 这 就 为 你 希 望 如 何 为 用 户 显 示 信 息 提 供 了灵 活 性 一 种 方 式 是 显 示 报 文 框 这 是 独 立 应 用 经 常 使 用 的 方 式
显 示 客 户 脚 本 中 的 报 文 框
- 在 客
户 脚 本 中 调 用 窗 口 对 象 的 告 警 方 法
要 引 用 当 前 窗 口 你 可 以 省 略 引 用 窗 口 对 象
如 果 你 在 VBScript 中 编 写 脚 本 你 可 以 使 用 MsgBox 功 能 这 个 功 能 允 许你 规 定 具 体 按 钮
你 可 以 直 接 在 页 面 上 显 示 客 户 脚 本 的 信 息 这 样 的 页 面 是 用 HTML 文 本 实 现
的
用 客 户 脚 本 显 示 页 面 上 的 信 息
- 调
用 文 档 编 写 方 法 把 文 本 放 到 页 面 中 脚 本 执 行 的 位 置 上 例 如
如 果 你 的 页 面 包 含 HTML 文 本 框 或 文 本 域 控 件 你 可 以 改 变 这 个 框 的 内 容用 于 显 示 信 息
显 示 HTML 控 件 中 的 信 息
- 设
置 文 本 框 或 文 本 域 控 件 的 值 的 属 性 如 下 例 所 示
如 果 你 的 应 用 在 支 持 动 态 HTML 例 如 Internet Explorer 4.0 的 浏 览 器中 运 行 你 就 可 以 直 接 设 置 拥 有 名 字 或 ID 的 任 何 标 记 的 文 本
使 用 DHTML 设 置 标 记 文 本
- 设 置
标 记 的 innertext 属 性 这 个 标 记 必 须 有 一 个 ID 或 者 有 你 可 以 在
脚 本 中 引 用 的 名 字 下 边 示 出 一 个 标 记 和 如 何 设 置 标 记
要 对 你 想 显 示 的 文 本 赋 予 格 式 你 可 以 在 其 中 包 含 HTML 标 记 如 下 例 所 示
如 果 你 希 望 显 示 的 信 息 中 包 含 HTML 保 留 的 字 符 例 如 <and> 你 就 不 能 把它 们 放 在 字 符 串 中 直 接 显 示
显 示 保 留 符 号
- 把
HTML 语 法 用 于 ASCII 字 符 例 如 & 1 t 或 < 要 用 一 个 开 始 尖 括 号
< :
从 服 务 器 脚 本 显 示 信 息
要 使 客 户 从 服 务 器 脚 本 上 显 示 信 息 通 常 你 可 以 使 这 些 信 息 成 为 发 送 到 浏览 器 的 页 面 的 一 部 分
从 服 务 器 脚 本 显 示 页 面 上 的 信 息
- 调
用 Response.W rite 方 法 把 它 传 递 给 你 希 望 显 示 的 信 息
<% Respo nse.Write “ T h e current time on the server is ” & Time %>
或 者
- 使
用 操 作 符 这 是 同 种 方 法 的 缩 短 形 式
<% = “ The curren t time on the server is ” & Time %>
或 者
- 如
果 信 息 不 在 变 量 中 或 者 不 是 用 表 达 式 计 算 出 来 的 就 使 它 成 为 页面 的 组 成 部 分 要 显 示 文 本 就 要 保 证 文 本 在 <% %> 定 界 符 之 外 而 且不 是 <SCRIPT RUNAT= ” SERVER ” > 块 的 组 成 部 分 你 可 以 在 这 种 方 式 中 包
含 HTML 标 记 如 下 例 所 示
服 务 器 不 能 直 接 显 示 报 文 框 但 是 服 务 器 脚 本 可 以 建 立 显 示 信 息 的 客 户 脚
本
显 示 服 务 器 脚 本 中 的 报 文 框
- 创
建 一 个 客 户 脚 本 然 后 把 它 放 在 服 务 器 脚 本 中 以 便 按 条 件 显 示 它在 下 边 例 子 中 只 当 服 务 器 上 的 错 误 旗 标 为 真 时 这 个 脚 本 块 才 发 送到 浏 览 器 中
如 果 你 希 望 显 示 的 信 息 包 含 H TM L 保 留 的 字 符 例 如 < a nd> 则 不 能 在 字 符
串 中 显 示 它 们
显 示 保 留 符 号
语 法 |
把 这 些 字 符 转 换 成 用 于 AS C I I 字 符 的 |
HT M L |
---|---|---|
< % = S e rv e r. H TM LEn c o d e ( |
T h e p a ra gra ph ta g: < p > ) % > |
|
25 .5 |
有 条 件 导 航 |
在 静 态 Web 页 面 中 你 用 <A > 标 记 把 页 面 链 接 在 一 起 如 下 例 所 示
C lic k <A H R EF = home.asp > h e re < / A > to re tu rn to th e h o m e p a g e .
但 是 使 用 脚 本 你 可 以 根 据 应 用 中 的 条 件 指 定 目 标 页 面 动 态 地 在 应 用中 实 现 导 航 例 如 你 应 用 中 的 页 面 可 能 要 用 户 提 供 口 令 如 果 用 户 给 出 正 确的 口 令 应 用 便 显 示 欢 迎 页 面 否 则 显 示 错 误 信 息
注 意 : 你 可 以 使 用 脚 本 对 象 模 型 和 为 W e b 页 面 设 计 导 航 的 页 面 对 象 有 关 细节 参 见 第 二 十 四 章 用 设 计 期 间 控 件 和 脚 本 对 象 编 写 脚 本 中 的 跨越 页 面 扩 展 脚 本 对 象 模 型
从 客 户 脚 本 进 行 导 航
如 果 你 正 在 编 写 客 户 脚 本 则 可 以 通 过 调 用 一 种 方 法 或 设 置 一 种 属 性 的 办法 控 制 浏 览 器 显 示 文 本 的 页 面
在 客 户 脚 本 中 导 航 到 另 一 个 页 面
- 在
VBScript 中 调 用 浏 览 器 窗 口 对 象 的 导 航 方 法 并 把 这 种 方 法 传 递 给
要 去 的 页 面 UR L 或 者
|
把 窗 口 对 象 的 |
location.h ref |
属 性 设 置 成 |
目 标 |
页 |
---|---|---|---|---|---|
面 的 UR L 或 者 |
- 在
任 何 脚 本 语 言 中 调 用 窗 口 对 象 的 打 开 方 法 把 这 个 方 法 同 其 它 参数 一 起 传 递 给 要 去 的 页 面 URL
调 用 这 种 方 法 允 许 你 规 定 一 个 窗 口 或 帧 在 这 个 窗 口 或 帧 中 显 示 一个 页 面 启 动 浏 览 器 的 一 个 新 实 例 并 控 制 浏 览 器 的 外 观
例 如 下 边 客 户 脚 本 读 出 窗 体 中 复 选 框 中 的 值 并 根 据 用 户 的 喜 好 导 航到 两 个 可 能 的 页 面 之 一
下 边 是 一 个 简 单 例 子 但 是 把 窗 口 对 象 的 href 属 性 设 置 成 导 航
从 服 务 器 脚 本 进 行 导 航
你 还 可 以 从 服 务 器 脚 本 控 制 在 浏 览 器 上 显 示 的 文 本 页 面 如 果 移 到 一 个 指定 页 面 的 条 件 只 取 决 于 服 务 器 上 可 用 的 信 息 例 如 来 自 数 据 库 会 话 或 应 用对 象 变 量 等 的 信 息 你 就 可 以 使 用 服 务 器 脚 本 进 行 导 航
在 服 务 器 脚 本 中 导 航
- 调
用 Response.R edirect 方 法 并 传 递 给 要 去 的 页 面 UR L
例 如 你 可 能 希 望 在 观 察 页 面 之 前 保 证 用 户 登 录 到 你 的 应 用 上 如 果 用户 企 图 导 航 到 应 用 中 较 深 的 页 面 上 而 不 事 先 登 录 你 便 会 希 望 检 测 用 户 并向 用 户 发 送 登 录 页 面 在 下 边 的 例 子 中 一 个 会 话 对 象 变 量 包 含 一 个 旗 标 指明 用 户 是 否 已 经 登 录
缓 冲 响 应
作 为 默 认 方 式 在 服 务 器 把 一 个 页 面 发 送 给 浏 览 器 的 时 候 一 旦 组 成 页 面就 以 流 式 进 行 输 出 然 而 你 可 以 使 服 务 器 对 输 出 进 行 缓 冲 如 果 你 这 样 做页 面 就 在 被 发 送 之 前 在 服 务 器 里 完 成 处 理 其 优 点 是 你 可 以 调 用 诸 如Response.R edirect 的 方 法 发 送 不 同 的 页 面 如 果 页 面 不 被 缓 冲 且 你 企 图 在当 前 页 面 发 送 之 后 对 某 个 页 面 进 行 重 定 向 则 服 务 器 就 报 告 出 错
设 置 缓 冲
- 把
Response 响 应 对 象 的 Buffer 缓 冲 器 特 性 设 置 成 True 真 或 False 假 , 如 下 边 例 所 示
<% Respon se.Buffer = True %>
管 理 顺 序 页 面 导 航
如 果 以 服 务 器 方 式 进 行 导 航 你 可 以 使 用 一 种 绑 定 部 件 它 可 以 在 整 个 页面 列 表 中 管 理 导 航 用 不 着 维 护 数 个 ASP 页 面 中 的 URL 引 用 子 你 可 以 在 一 个容 易 编 辑 的 文 本 文 件 中 指 定 多 个 页 面 之 间 的 顺 序 编 排
创 建 顺 序 页 面 导 航
1 . 创 建 一 个 文 本 文 件 每 一 行 包 含 一 个 文 件 列 表
-
创 建 一 个 NextLink 对 象
-
使 用 NextLink 对 象 的 方 法 在 列 表 中 多 个 页 面 之 间 进 行 移 动
下 边 例 子 从 文 本 文 件 中 读 出 链 接 顺 序 并 在 一 个 页 面 上 创 建 一 个 内 容 表 格
25 .6 共 享 动 态 信 息
在 你 的 Web 应 用 中 你 可 能 需 要 多 次 使 用 两 个 页 面 或 多 个 页 面 上 的 相 同 信息 例 如 你 的 应 用 可 能
-
提 示 用 户 给 出 名 字 然 后 把 名 字 传 递 给 另 一 个 页 面 并 在 那 里 显 示 出 来
-
显 示 用 户 最 后 访 问 你 站 点 的 时 间 和 日 期
-
要
求 用 户 登 录 当 用 户 登 录 的 时 候 应 用 就 为 用 户 分 配 安 全 级 别 即在 你 应 用 中 到 处 检 查 的 安 全 级 别
注 释 : 你 可 以 使 用 脚 本 对 象 模 型 和 页 面 对 象 去 自 动 维 护 信 息 状 态 有 关 细节 参 见 第 二 十 三 章 脚 本 编 程 概 念 中 的 脚 本 对 象 模 型
共 享 动 态 信 息
- 把 信 息 存 储 在 由 应 用 或 会 话 对 象 维 护 的 全 局 变 量 中 而 应 用 和 会 话 变量 中 的 信 息 保 存 在 多 个 页 面 之 中
或 者
- 把 一 个 字 符 串 从 一 个 页 面 直 接 传 递 给 另 一 个 页 面 这 另 一 个 页 面 是 一个 链 接 上 URL 的 组 成 部 分
或 者
-
把 信 息 存 储 在 允 许 永 久 存 储 数 据 的 数 据 库 中 与 其 它 应 用 共 享 这 些 信息 并 且 使 用 数 据 库 功 能 以 过 滤 和 分 析 应 用 数 据 详 见 第 二 十 章 修改 数 据
-
把 信 息 存 储 到 用 户 计 算 机 的 串 存 单 元 cookie 中 因 为 你 可 以 读 写
串 存 单 元 因 而 你 可 以 使 用 串 存 单 元 维 护 用 户 专 门 信 息或 者
- 把 信 息 存 储 到 ASP 对 象 中
每 种 方 法 都 有 不 同 的 用 法 具 体 用 法 取 决 于 若 干 因 素 如 多 少 个 页 面 需 要这 个 信 息 和 你 是 否 需 要 硬 件 保 留 这 些 信 息 等
存 储 全 局 信 息
你 可 以 使 用 Microsoft Intrnet In formation Services(I IS Internet 信息 服 务 ) 的 两 个 对 象 定 义 全 局 变 量
- **应
用 对 象** 服 务 器 为 每 个 基 于 ASP 的 应 用 维 护 一 个 应 用 对 象 这 个 对象 是 在 第 一 个 用 户 访 问 应 用 的 时 候 初 始 化 的 然 后 保 持 不 变 直 到 应用 关 掉 为 止
当 你 在 服 务 器 应 用 对 象 中 定 义 变 量 时 其 值 对 应 用 中 所 有 页 面 都 是 可用 的 典 型 例 子 是 应 用 命 中 一 个 计 数 器 每 当 用 户 开 始 一 个 会 话 时这 个 计 数 器 就 更 新 一 次
- **会
话 对 象** 会 话 (session) 对 象 是 在 用 户 第 一 次 请 求 服 务 器 中 一 个 页 面时 初 始 化 的 该 对 象 保 持 不 变 直 到 放 弃 会 话 为 止 这 可 能 是 用 户 手动 关 掉 并 重 新 打 开 浏 览 器 调 用 Session.Ab andon 方 法 也 可 能 是 用户 的 浏 览 器 停 止 访 问 该 应 用 的 页 面 持 续 时 间 达 到 了 规 定 的 时 间 间 隔
会 话 对 象 对 任 何 用 户 都 是 全 局 性 的 你 可 以 使 用 会 话 对 象 维 护 用 户 的安 全 级 别
获 取 和 设 置 应 用 中 的 值 和 会 话 对 象 变 量
- 在 服 务 器 脚 本 中 使 用 如 下 语 法
应 用 和 会 话 对 象 变 量 初 始 化
- 在
全 局 Global.asa 文 件 中 为 Applicatio n_OnStart 和Session_On Start 事 件 编 写 处 理 程 序 为 你 希 望 使 用 的 每 个 变 量 设 置初 始 值
例 如 你 可 以 在 应 用 对 象 变 量 中 维 护 一 个 命 中 的 计 算 机 你 可 以 使 用 下 边的 脚 本 对 Applicatio n_OnStart 事 件 中 的 计 数 器 进 行 初 始 化
用 户 每 次 启 动 一 个 会 话 这 个 计 数 器 就 更 新 一 次 然 后 你 还 可 以 在 会 话 对象 变 量 中 为 用 户 产 生 一 个 计 数 器 的 本 地 副 本 做 这 件 事 的 最 好 位 置 是 在Global.asa 文 件 的 Session_On Start 事 件 中 要 使 用 下 边 这 样 的 脚 本
打 开 你 应 用 的 页 面 便 以 下 述 形 式 显 示 这 个 计 数 器
当 用 户 第 一 次 看 见 打 开 的 页 面 时 这 两 个 数 是 相 同 的 如 果 用 户 再 一 次 访问 页 面 时 out of 数 应 用 对 象 计 数 器 可 能 改 变 ( 如 果 第 一 个 用 户 开 启 一个 会 话 之 后 其 他 用 户 又 开 启 会 话 的 话 )
应 用 和 会 话 对 象 变 量 通 常 都 只 存 储 动 态 信 息 如 果 你 希 望 永 久 保 留 这 些 信息 你 必 须 采 取 一 种 方 式 保 存 应 用 和 会 话 之 间 的 信 息 一 种 方 式 是 把Applicatio n_OnEnd 处 理 程 序 或 Session_On End 处 理 程 序 的 值 全 部 写 到Global.asa 文 件 中
把 查 询 串 加 到 链 接 上
你 可 以 把 信 息 作 为 链 接 <A> 标 记 的 一 部 分 直 接 传 递 给 另 一 个 页 面 例 如一 个 页 面 可 能 显 示 雇 员 名 字 列 表 列 表 中 的 每 个 名 字 都 是 一 个 链 接 当 用 户 选择 其 中 的 一 个 名 字 的 时 候 链 接 便 调 用 一 个 页 面 并 把 这 个 页 面 传 递 给 相 应 雇员 ID
把 查 询 串 加 到 链 接 上
- 在 一 条 链 接 定 义 <A> 标 记 中 把 一 个 查 询 串 加 到 目 标 URL 的 后 边要 在 URL 和 这 个 查 询 串 之 间 用 作 为 定 界 符 语 法 如 下
< targetURL > ? < parm 1 >=< value > & < parm2 >=< value > & …
下 例 说 明 一 个 显 示 雇 员 名 字 列 表 的 页 面 每 个 名 字 是 一 条 链 接 所 有 链 接都 到 同 一 个 页 面 上 但 是 每 个 链 接 都 传 递 一 个 不 同 的 雇 员 ID
在 EmplInputF orm.asa 文 件 中 你 可 以 使 用 服 务 器 Request 请 求 对 象的 QueryStrin g 查 询 串 集 合 确 定 要 传 递 什 么 值
<% vEmp 1 ID = Request.QueryStri ng( “ empid ” ) %>
你 可 以 使 用 服 务 器 脚 本 创 建 多 个 先 进 的 动 态 链 接 以 便 提 供 值 例 如下 行 脚 本 中 雇 员 ID 和 雇 员 名 字 是 从 对 数 据 库 的 一 次 查 询 得 到 的
<A HREF=Em plInputForm.asp?empi d= <%=RS.Fields( EemID )%> > _
<%=RS .Fields( EmpFName )%> </A>
在 用 户 计 算 机 上 存 储 信 息
维 护 用 户 信 息 的 一 种 方 便 方 式 是 使 用 一 个 串 存 单 元 cookie 当 第 一 次 启动 一 个 会 话 时 服 务 器 便 把 一 个 串 存 单 元 发 送 给 客 户 浏 览 器 客 户 浏 览 器 每 次从 那 个 服 务 器 请 求 一 个 页 面 的 时 候 浏 览 器 都 把 这 个 串 存 单 元 发 回 到 服 务 器 服 务 器 接 着 就 可 以 阅 读 这 个 串 存 单 元 并 识 别 客 户 浏 览 器
你 可 以 使 用 串 存 器 存 储 你 自 己 的 应 用 信 息 例 如 用 户 的 喜 好 串 存 单 元 一直 可 用 到 串 存 器 Expire 到 期 属 性 中 规 定 的 日 期
注 意 : 因 为 串 存 单 元 可 能 写 到 用 户 的 硬 盘 中 大 多 数 浏 览 器 通 常 都 允 许 用 户关 闭 它 们 或 者 在 接 收 一 个 串 存 器 之 前 显 示 一 条 警 告 串 存 单 元 对 于一 些 应 用 是 不 现 实 的 例 如 对 于 拥 有 范 围 广 泛 的 浏 览 器 和 安 全 设 置 的用 户 访 问 的 公 共 信 息 如 果 你 使 用 串 存 单 元 你 的 应 用 必 须 提 供 另 一种 方 式 维 护 动 态 信 息 因 为 用 户 浏 览 器 可 能 拒 绝 串 存 单 元
在 串 存 单 元 中 存 储 信 息
- 要
把 信 息 存 储 到 串 存 单 元 cookie 中 可 使 用 Response.C ookie 集 合要 取 得 一 个 串 存 单 元 的 信 息 就 使 用 Request.Co okie 集 合 例 如
<% Response.Co okies ( FavoriteCo lor )= Red %>
<% txt Favorite = Request.Cookies( FavoriteCo lor )%>
串 存 单 元 可 以 存 储 多 个 值 对 串 存 单 元 中 的 每 个 值 都 分 配 一 个 键 以 便 识 别 要 把 一 个 值 存 储 到 串 存 单 元 中 你 要 使 用 Response 对 象 指 定 要 更 新 的 串
存 单 元 的 名 字 要 更 新 的 键 以 及 值 如 果 串 存 单 元 尚 未 存 在 Response 对 象 就创 建 它 例 如 下 边 脚 本 就 更 新 一 个 串 存 器 把 其 键 FavoriteCo lor 设 置 成 Red :
<% R esponse.Cookies( Preference s ) ( FavoriteCo lor ) = Red
%>
注 意 : 你 必 须 在 一 个 .asp 文 件 的 <HEAD> 部 分 中 更 新 串 存 单 元 否 则 将 导 致错 误 结 果
如 果 一 个 已 经 存 在 的 串 存 单 元 有 键 值 但 是 Response.C ookies 方 法 没 指 定键 名 字 那 么 这 个 已 经 存 在 的 键 值 便 被 检 测 到 同 样 如 果 一 个 已 经 存 在 的 串存 单 元 没 有 键 值 但 是 Response.C ookies 方 法 指 定 了 键 名 字 和 值 那 么 这 个 已经 存 在 的 串 存 单 元 值 便 被 检 测 到 而 且 创 建 新 的 键 值 对
要 从 串 存 单 元 取 得 这 个 值 可 要 用 类 似 的 语 法 使 用 Request 对 象
<% vColo r= Request.Cookies( Preference s ) ( FavoriteCo lor ) %>
有 关 如 何 使 用 串 存 单 元 存 储 信 息 参 见 Visual InterDev 在 线 文 档 中 的 User Preference sample
阅 读 与 编 写 文 件
在 服 务 器 脚 本 中 维 护 信 息 的 另 一 种 方 式 是 把 信 息 存 储 到 服 务 器 上 的 一 个文 本 文 件 中
阅 读 与 编 写 文 本 文 件
1 . 在 服 务 器 脚 本 中 创 建 一 个 TextStream 对 象
- 使 用 该 对 象 的 CreateText File WriteLine 和 ReadLine 方 法 管 理 这 个 文件 中 的 信 息
下 边 的 例 子 创 建 一 个 新 文 件 并 把 一 行 文 本 写 入 该 文 件 中
25 .7 编 写 可 重 复 使 用 的 脚 本
在 大 多 数 Web 应 用 中 你 会 希 望 显 示 多 个 页 面 上 的 HTML 内 容 块 或 多 个 文 件中 的 进 程 脚 本
使 用 多 个 文 件 中 的 内 容
- 使
用 服 务 器 方 的 #INCLUDE 指 令 把 其 它 文 件 内 容 动 态 插 入 到 你 的 文 件中
你 可 以 使 用 这 个 #INCLUDE 指 令
-
共 享 各 个 页 面 之 间 的 HTML 内 容
-
共 享 脚 本 库
注 意 : 当 你 把 其 它 文 件 的 内 容 插 入 你 的 页 面 中 的 时 候 Script Outline 脚本 大 纲 窗 口 不 反 映 它 们 的 内 容 同 样 在 所 包 含 文 件 中 定 义 的 对 象在 IntelliSen se 语 句 的 下 拉 列 表 中 不 出 现
共 享 HT ML 内 容
你 的 应 用 中 可 能 包 含 你 希 望 在 多 个 页 面 上 使 用 的 HTML 元 素 页 面 导 航 按 钮
Next Previrous 和 Home 版 权 信 息 公 司 徽 标 等
为 取 代 把 文 本 复 制 和 传 递 到 多 个 页 面 上 你 可 以 把 信 息 放 到 文 件 上 然 后引 用 文 件 被 引 用 的 文 件 包 含 你 在 其 它 页 面 相 应 位 置 处 所 希 望 的 文 本 然 后如 果 你 需 要 更 新 这 些 文 本 你 可 以 在 文 件 中 更 新 它 包 含 这 个 文 件 的 所 有 页 面会 自 动 显 示 更 新 的 文 本
引 用 其 它 文 件 中 的 信 息
- 使 用 服 务 器 命 令 #INCLUDE FILE 对 于 路 径 同 当 前 文 件 的 关 系 或
#INCLUDE V IRTUAL 对 于 路 径 同 虚 拟 根 的 关 系
例 如 下 边 一 行 包 括 在 页 面 顶 部 名 字 为 Header.inc 的 一 个 文 件 和 在 页 面 底部 名 字 为 Footer.inc 的 一 个 文 件
<!-- # INC LUDE FILE = Header.inc -->
Normal HTM L text and script go es here.
<!-- # INC LUDE FILE = Footer.inc -->
当 这 个 文 件 被 Web 服 务 器 处 理 的 时 候 Header.inc 和 Footer.inc 文 件 的全 部 内 容 都 插 入 到 位 于 #INCLUDE 指 令 位 置 的 文 件 中 Header.inc 和 Footer.inc 中 的 任 何 脚 本 都 将 被 处 理 但 是 处 理 之 前 包 含 的 所 有 内 容 都 要 归 并 到 一 个 主 文件 之 中 你 甚 至 可 以 用 使 文 件 包 含 其 它 #INCLUDE 指 令 的 办 法 把 文 件 嵌 套 起 来
你 可 以 更 新 你 产 品 服 务 器 上 被 包 含 的 文 件 无 需 使 Web 服 务 器 停 下 来 然而 你 不 能 把 #INCLUDE 包 含 在 一 个 循 环 中 也 不 能 递 归 式 地 包 含 文 件 例 如 文件 A.inc 可 能 有 如 下 一 行
<!-- # INC LUDE FILE = B.inc -->
在 这 种 情 况 下 你 不 能 在 B.inc 文 件 中 包 含 如 下 一 行
<!-- # INC LUDE FILE = A.inc -->
企 图 这 样 做 将 导 致 出 错
共 享 脚 本 库
在 ASP 页 面 中 你 可 以 使 用 #INCLUDE 指 令 共 享 脚 本 库 这 就 允 许 你 在 多 个页 面 之 间 共 享 子 程 序 和 函 数 例 如 下 边 文 件 包 含 一 个 函 数 和 一 个 子 程 序 该功 能 返 回 由 单 引 号 ( ’) 定 界 的 串 而 该 子 程 序 取 一 个 数 列 自 变 量 并 在 HTML 表中 显 示 这 个 数 列 值
为 取 代 在 你 的 许 多 页 面 上 重 复 这 个 脚 本 你 可 以 使 用 下 边 一 行 使 子 程 序 和
函 数 可 用
<!-- # INC LUDE FILE = shared.inc -->
要 保 证 这 个 #INCLUDE 行 在 任 何 调 用 之 前 进 入 文 件 的 子 程 序 或 功 能
接 着 如 果 你 希 望 改 变 Array2Tabl e 子 例 程 中 的 某 些 窗 体 选 项 如 给 表 格边 框 为 1 或 宽 度 为 1 00 你 可 以 在 Shared.asp 中 的 子 例 程 内 建 立 这 种 改 变则 所 有 页 面 都 将 立 即 以 新 特 征 显 示 这 个 表
在 客 户 脚 本 中 你 可 以 在 <SCRIPT> 块 中 包 含 对 其 它 文 件 的 引 用 子 使 用 SRC
属 性 对 你 希 望 包 含 脚 本 的 文 件 规 定 名 称 例 如 下 边 <SCRIPT> 块 包 含 一 个 引 用
子 指 向 包 含 出 错 报 文 例 程 的 页 面
<SCRIPT SR C= Errmsg.htm ></SCRIPT>
以 这 种 方 式 把 一 个 引 用 子 放 到 一 个 文 件 之 后 你 就 可 以 调 用 这 个 页 面 上 的脚 本 就 像 脚 本 在 当 前 页 面 上 一 样
25 .8 创 建 可 移 植 脚 本
如 果 你 编 写 一 个 Web 应 用 供 公 司 的 内 部 网 使 用 或 供 其 它 已 知 环 境 使 用你 通 常 可 以 依 靠 特 定 Web 浏 览 器 的 特 性 但 是 如 果 你 的 应 用 将 被 可 自 选 浏 览 器的 用 户 访 问 则 必 须 小 心 编 写 这 个 应 用 使 尽 可 能 多 的 浏 览 器 能 正 常 工 作
在 创 建 一 个 尽 可 能 独 立 于 浏 览 器 的 应 用 时 你 必 须 可 以
-
识 别 用 户 要 使 用 的 浏 览 器 和 它 的 功 能
-
创 建 在 不 同 浏 览 器 上 运 行 的 脚 本 或 者 说 你 可 以 提 供 适 当 的 方 式以 便 适 应 多 种 浏 览 器 包 括 不 能 支 持 你 应 用 所 有 特 性 的 浏 览 器
注 意 : 当 你 在 Visual Int erDev 中 创 建 一 个 新 W e b 页 面 的 时 候 你 可 以 为 页面 设 置 的 属 性 之 一 是 TargetBrow ser 这 个 属 性 履 行 任 何 检 查 但 是可 防 止 你 创 建 不 适 合 于 某 种 浏 览 器 的 脚 本
这 种 TargetBrow ser 属 性 只 是 向 编 辑 器 告 警 你 是 否 为 Internet Explorer
- 编 写 脚 本 如 果 是 它 便 告 诉 编 辑 器 在 完 成 脚 本 语 句 的 时 候 显 示 Internet Explorer 4 . 0 对 象
识 别 浏 览 器 和 浏 览 器 能 力
你 可 以 使 用 各 种 不 同 属 性 和 对 象 以 获 取 用 户 当 前 使 用 浏 览 器 的 有 关 信 息
获 取 客 户 脚 本 中 浏 览 器 信 息
- 查 询 窗 口 导 航 器 对 象 的 属 性
例 如 下 边 客 户 脚 本 显 示 当 前 浏 览 器 的 名 字
在 服 务 器 脚 本 中 你 可 以 从 HTTP 抬 头 中 获 取 某 个 浏 览 器 的 基 本 信 息 并 使用 绑 定 部 件 得 到 细 节
在 服 务 器 脚 本 中 从 HTTP 抬 头 获 取 基 本 浏 览 器 信 息
- 使 用 服 务 器 Request 对 象 的 ServerVari ables 集 合 并 查 询
HTTP_USER_ AGENT 的 值
HTTP_USER_ AGENT 变 量 的 值 是 一 个 串 它 列 出 浏 览 器 的 兼 容 性 名 字 和 版本 例 如 这 个 脚 本 显 示 请 求 一 个 页 面 的 浏 览 器 功 能 这 个 页 面 上 面 有 该 脚 本
在 服 务 器 脚 本 中 获 取 有 关 指 定 浏 览 器 功 能 的 信 息
- 创 建 BrowserTyp e 对 象 实 例 然 后 查 询 它 的 属 性
例 如 你 可 以 确 定 浏 览 器 是 否 支 持 帧 或 者 是 否 支 持 VBScript 下 边 例 子使 用 BrowserTyp e 对 象 部 件 以 显 示 当 前 浏 览 器 的 功 能
指 定 浏 览 器 类 型 的 有 关 信 息 保 存 在 服 务 器 上 Browscap.i ni 文 件 中
Browscap.i ni 文 件 的 内 容 决 定 对 BrowserTyp e 对 象 可 用 的 属 性
创 建 独 立 于 浏 览 器 的 脚 本
除 非 你 知 道 你 的 用 户 将 使 用 什 么 类 型 的 浏 览 器 否 则 你 就 应 当 预 料 范 围 广泛 的 浏 览 器 创 建 的 脚 本 应 能 在 尽 可 能 多 的 浏 览 器 上 运 行
使 你 的 脚 本 独 立 于 浏 览 器
-
避 免 使 用 只 能 在 某 些 浏 览 器 上 可 用 的 特 性 如 特 定 对 象或 者
-
允 许 用 户 规 定 他 们 希 望 看 见 的 内 容或 者
-
对
特 定 浏 览 器 功 能 进 行 测 试 对 于 浏 览 器 可 能 不 支 持 的 脚 本 要 慎 重使 用 其 分 支 的 内 容
提 示 : 适 应 特 定 浏 览 器 的 简 单 方 式 是 把 你 的 W e b 页 面 创 建 成 两 个 或 更 多 版 本 根 据 查 询 用 户 浏 览 器 情 况 或 者 明 确 问 用 户 你 可 以 提 供 通 过你 应 用 的 不 同 途 径 每 种 途 径 都 包 含 同 用 户 浏 览 器 相 兼 容 的 页 面
避 免 特 定 浏 览 器 特 性
特 定 浏 览 器 使 用 不 同 对 象 模 型 尽 管 各 种 浏 览 器 之 间 的 对 象 模 型 常 常 有 重叠 之 处 例 如 Internet Explorer 4.0 支 持 动 态 HTML DHTML 这 种 特 性 允许 在 页 面 上 添 加 动 画 片 和 文 本 效 果 然 而 DHTML 特 性 不 是 对 所 有 浏 览 器 都 是必 需 的 所 以 如 果 你 使 用 这 些 特 性 就 必 须 保 证 使 用 不 同 浏 览 器 的 用 户 不 要试 图 观 察 有 DHTML 页 面 的 页 面
有 关 特 定 浏 览 器 可 以 使 用 哪 些 对 象 的 细 节 参 见 你 的 浏 览 器 文 档
允 许 用 户 规 定 内 容
你 可 以 查 明 用 户 浏 览 器 在 你 脚 本 中 的 能 力 但 是 你 不 能 确 定 其 它 因 素 例如 调 制 解 调 器 的 速 度 因 为 这 会 影 响 用 户 对 你 的 Web 站 点 的 感 受 允 许 用 户 规定 他 们 希 望 接 收 的 内 容 类 型 把 控 制 权 交 到 用 户 手 中 是 很 有 好 处 的
允 许 用 户 规 定 内 容
1 . 使 用 一 个 窗 体 或 动 态 链 接 询 问 用 户 的 喜 好 有 关 细 节 参 见 本 章 前 边用 HTML 窗 体 收 集 信 息 和 共 享 动 态 信 息
-
把 这 些 喜 好 存 储 到 一 个 服 务 器 会 话 变 量 中 或 者 串 存 单 元 cookie 中详 参 见 本 章 前 边 共 享 动 态 信 息
-
使 用 分 支 显 示 或 包 括 用 户 指 定 信 息 有 关 内 容 参 见 本 章 前 边 编 写 可以 重 复 使 用 的 脚 本
例 如 下 边 两 个 链 路 允 许 一 个 用 户 规 定 显 示 首 选
Setpref.as p 中 的 脚 本 把 一 个 会 话 对 象 变 量 设 置 成 存 储 用 户 的 首 选
你 页 面 上 的 脚 本 可 以 检 查 这 个 会 话 对 象 变 量 的 设 置 确 定 如 何 显 示 你 的 内
容
测 试 浏 览 器 能 力
你 还 可 以 使 用 脚 本 中 的 逻 辑 确 定 可 用 的 特 性 例 如 下 边 的 脚 本 测 试 浏览 器 是 否 支 持 JavaScript 如 果 支 持 就 插 入 一 个 小 脚 本 跳 到 首 页 上 否 则就 插 入 HTML 文 本 显 示 用 户 要 敲 击 的 跳 跃
你 可 以 把 对 浏 览 器 的 测 试 同 服 务 器 #INCLUDE 指 令 结 合 起 来 为 用 户 全 面 显示 不 同 的 页 面 下 边 的 脚 本 测 试 浏 览 器 如 果 浏 览 器 同 Internet Explorer 3.0 或 更 高 版 本 兼 容 它 就 把 各 种 颜 色 选 项 包 括 在 一 个 页 面 中 否 则 就 给 出 一 个较 一 般 化 的 页 面
<% browser = Request.ServerVar iables( HTTP_USER_ AGENT )%>
<%If b rowser = Mozilla/2. 0 (compatible; MSIE 3.08;W indows NT) Then%>
<!--#I NCLUDE FILE= /myapp/Col oredTable.asp -->
<%Else%>
<!--#I NCLUDE FILE= /myapp/Pla inTable.asp -->
<%End If%>