第 二 十 三 章 脚 本 编 程 概 念
23 . 1 编 辑 模 型
默 认 的 Visual Int erDev HTML 编 辑 器 允 许 你 以 不 同 模 式 加 工 Web 页 面
-
**De
sign v i e w** **设 计 视 图** 以 字 符 和 分 段 窗 体 显 示 文 本 的 编 辑 器 很像 文 字 处 理 器
-
So urce vie w 源 视 图 显 示 HTML 标 记 文 本 和 脚 本 并 且 亮 显 HTML
标 记 和 文 本
- **Qu
eick vie w** **快 速 视 图** 显 示 .htm 文 件 的 编 辑 器 文 件 出 现 的 样子 就 像 出 现 在 Internet E xplorer 中 一 样
在 编 辑 器 中 导 航
当 你 使 用 HTML 编 辑 器 的 时 候 Visual InterDev 允 许 你 显 示 各 种 文 档 大 纲帮 助 你 快 速 移 动 轻 松 通 过 你 的 文 档
- 在 Design 和 Source 视 图 中 HTML Outli ne 大 纲 窗 口 显 示 页 面 上
HTML 元 素 和 对 象 的 分 层 视 图
HTML 大 纲 窗 口
- 在
Source 源 视 图 中 Script Outline 脚 本 大 纲 窗 口 给 出 页 面上 所 有 脚 本 元 素 的 树 状 图 对 每 个 元 素 给 出 你 可 以 编 写 脚 本 的 事 件 已 经 存 在 的 脚 本 用 黑 体 表 示
脚 本 大 纲 窗 口
当 你 在 任 何 一 个 大 纲 窗 口 中 选 择 一 个 元 素 的 时 候 你 就 移 到 页 面 上 那 个 元素 的 位 置
工 具 框
当 你 用 编 辑 器 工 作 时 你 可 以 把 对 象 加 到 你 的 页 面 上 使 用 的 办 法 是 把 对象 从 Toolbox ( 工 具 框 ) 拖 到 页 面 上 你 可 以 使 用 Design 视 图 和 Source 视 图 中的 Toolbox Toolbox 在 你 的 计 算 机 上 显 示 一 组 预 选 控 件 其 中 包 括 标 准 HTML 控 件 例 如 文 本 框 和 按 钮 Visual Int erDev 设 计 期 间 控 件 ActiveX 控 件 和服 务 器 对 象
然 而 Toolbox 只 不 过 是 添 加 对 象 的 另 一 种 手 段 你 可 以 使 用 它 存 储 编 辑器 中 的 任 何 文 本 其 中 包 括 脚 本 和 HTML 文 本 等 你 在 Toolbox 中 存 储 的 这 些 文本 二 进 制 位 称 作 片 断 (fragment) 此 外 你 可 以 在 Toolbox 中 编 辑 选 项 卡添 加 删 除 和 重 新 安 排 这 些 选 项 卡 以 适 应 你 的 开 发 环 境 需 要
设 计 视 图
设 计 视 图 Design view 使 得 查 看 和 编 辑 HTML 文 本 变 得 轻 松 容 易 所 使用 的 窗 体 看 上 去 同 浏 览 器 的 窗 体 类 似 你 可 以 添 加 HTML 文 本 并 用 HTML 文 本 进行 工 作 还 可 以 添 加 和 使 用 一 些 元 素 如 图 像 表 格 设 计 期 间 控 件 HTML 控件 窗 体 按 钮 等 ActiveX 控 件 和 Java 小 程 序 等 你 的 页 面 全 是 用 字 符 显示 的 你 指 定 的 分 段 窗 体 很 像 在 浏 览 器 中 的 窗 体 如 果 你 正 使 用 级 联 样 式 图 表(CSS) 或 者 已 经 把 样 式 信 息 加 到 HTML 标 记 中 设 计 视 图 就 能 反 映 出 来
因 为 你 在 设 计 视 图 中 工 作 你 可 以 为 页 面 上 的 元 素 设 置 特 性 如 果 显 示 的
是 属 性 窗 口 (Propertie s windows) 页 面 上 当 前 选 中 元 素 的 属 性 就 会 显 示 出 来一 些 元 素 例 如 表 格 还 允 许 是 用 客 户 属 性 对 话 框 设 置 属 性 (attribute )
在 设 计 视 窗 中 的 属 性 窗 口
注 意 : 在 设 计 视 图 中 属 性 窗 口 显 示 ( 在 Source 视 图 中 不 显 示 的 ) 样 式 信 息
尽 管 设 计 视 图 看 上 去 很 像 浏 览 器 中 的 一 个 页 面 但 在 以 下 诸 方 面 是 不 同 的
-
字 符 与 分 段 窗 体 可 能 不 同 因 为 每 种 浏 览 器 可 以 使 用 不 同 格 式 实 现
-
客 户 脚 本 不 运 行
-
链 接 不 活 化
-
某 些 元 素 例 如 脚 本 注 解 和 不 能 识 别 的 HTML 标 记 都 可 以 作 为 图 示符 (glyphs) 显 示 出 来 这 样 你 便 知 道 页 面 上 有 这 些 元 素
-
你
可 以 显 示 元 素 周 围 的 在 浏 览 器 中 看 不 见 的 边 框 这 样 你 就 可 以 看 见边 框 在 什 么 地 方 例 如 即 便 一 个 表 格 没 规 定 边 框 你 可 以 从 设 计 工具 栏 中 选 择 可 见 边 框 使 编 辑 器 在 表 格 周 围 显 示 一 个 像 素 宽 的 边 框以 便 你 在 表 格 上 工 作
关 于 设 计 视 图 的 更 多 细 节 参 见 在 线 文 档 中 Design View,HTML Editor
和 Design Too lbar
源 视 图
源 视 图 Source view 允 许 你 在 页 面 上 查 看 并 编 辑 原 始 HTML 并 直 接 用脚 本 进 行 工 作 你 还 可 以 使 用 图 形 表 示 的 或 文 本 表 示 的 Visual Int erDev 设 计期 间 控 件 ActiveX 控 件 和 Java 小 程 序 进 行 工 作 文 本 是 彩 色 的 因 而 你 可 以很 容 易 区 分 脚 本 关 键 字 HTML 标 记 属 性 注 解 等 这 些 性 质 使 你 很 容 易 开 发Web 页 面 并 全 面 控 制 其 内 容
为 编 辑 对 象 或 HTML 元 素 你 可 以 选 择 它 们 然 后 使 用 Properties 属 性 窗 口 或 客 户 Property Pages 属 性 页 面 窗 口 设 置 它 们 的 属 性 在 属 性 窗 口 中或 在 属 性 页 面 对 话 框 中 所 做 的 改 变 都 反 映 在 这 些 对 象 的 HTML 源 代 码 中
如 果 你 的 页 面 包 含 脚 本 你 就 可 以 在 源 视 图 中 看 见 脚 本 的 源 代 码 在 源 视图 中 你 可 以 使 用 Script Outline 脚 本 大 纲 窗 口 查 看 你 页 面 上 的 脚 本 元 素看 看 已 经 创 建 了 什 么 脚 本
脚 本 大 纲 窗 口
随 着 你 键 入 语 句 针 对 你 使 用 的 对 象 IntelliSen se 显 示 属 性 和 方 法 列 表帮 助 你 完 成 语 句
IntelliSence 完 成 语 句
当 你 在 源 视 图 中 编 辑 一 个 脚 本 的 时 候 你 可 以 调 出 一 个 调 试 器 这 种调 试 器 使 你 设 置 断 点 一 步 步 通 过 脚 本 并 完 成 其 它 典 型 调 试 任 务
快 速 视 图
要 想 事 先 看 看 .htm 文 件 在 Internet Explorer 中 看 上 去 是 什 么 样 的 你
可 以 使 用 Quick view ( 快 速 视 图 ) 图 像 和 链 接 的 工 作 就 像 文 档 在 目 的 Web
服 务 器 上 自 己 的 位 置 上 工 作 一 样
快 速 视 图
注 意 : 快 速 视 图 不 通 过 服 务 器 处 理 页 面 因 而 它 不 能 对 A S P 文 件 看 上 去 应 当
是 什 么 样 提 供 精 确 视 图 如 果 你 希 望 预 览 包 含 服 务 器 元 素 的 文 档 要使 用 View 菜 单 中 的 View in Br owser 命 令
因 为 快 速 视 图 为 你 展 示 浏 览 器 中 的 一 个 页 面 因 而 你 不 能 编 辑 或 调 试 这 个视 图 中 的 页 面
23 .2 We b 应 用 中 的 脚 本
为 显 示 一 个 页 面 上 的 文 本 图 像 或 链 接 你 要 添 加 文 本 并 用 HTML 标 记 赋予 它 格 式 然 而 要 控 制 页 面 的 表 现 方 式 你 就 要 创 建 嵌 入 到 页 面 中 的 脚 本 或程 序 完 成 指 定 功 能 例 如
-
在 用 户 敲 击 按 钮 键 入 文 字 或 提 交 窗 体 时 控 制 出 现 的 内 容
-
根 据 条 件 例 如 用 户 的 喜 好 导 航 到 特 定 页 面
-
收 集 并 存 储 用 户 信 息 以 便 动 态 定 制 Web 应 用
-
查
询 数 据 库 显 示 结 构你 可 以 用 不 同 方 式 创 建 脚 本
-
使
用 设 计 期 间 控 件 允 许 你 设 置 属 性 值 并 在 对 话 框 中 键 入 值 然 后 为你 生 成 脚 本
-
在
HTML 编 辑 器 中 的 源 视 图 中 编 写 你 的 脚 本
Visual InterDev 支 持 完 整 的 脚 本 对 象 模 型 允 许 你 使 用 标 准 的 面 向 对 象的 技 术 创 建 Web 页 面 详 见 本 章 后 边 脚 本 对 象 模 型 一 节
脚 本 如 何 工 作
脚 本 源 代 码 出 现 在 页 面 上 如 下 边 例 子 所 示
脚 本 源 代 码
当 请 求 页 面 时 页 面 上 的 脚 本 同 其 它 所 有 文 本 一 起 读 出 来 服 务 器 或 浏 览
器 读 取 脚 本 检 查 是 否 有 错 误 然 后 运 行 这 个 脚 本
因 为 脚 本 是 简 单 的 文 本 块 你 可 以 在 一 个 页 面 上 编 写 脚 本 然 后 把 它 放 到多 个 其 它 页 面 上 详 见 第 二 十 五 章 用 HTML 元 素 编 写 脚 本 中 的 编 写 可 重 复使 用 的 脚 本
脚 本 语 言
你 可 以 使 用 任 何 你 感 觉 舒 适 的 脚 本 语 句 编 写 脚 本 常 见 的 脚 本 语 言 有Microsoft Visual Basic Script Edition(VBScrip t) 和 ECMAScript ( 一 种 标准 的 脚 本 语 言 ) 实 现 ECMAScript 的 流 行 语 言 是 Microsoft JScript 和JavaScript
因 为 脚 本 语 言 是 解 释 性 语 言 你 必 须 保 证 在 用 户 请 求 一 个 页 面 的 时 候 用户 的 浏 览 器 和 服 务 器 如 果 你 正 在 编 写 服 务 器 脚 本 的 话 可 以 使 用 你 在 编 写脚 本 时 使 用 的 语 言 例 如 如 果 你 使 用 VBScript 语 言 编 写 你 的 所 有 脚 本 你 必须 保 证 用 户 浏 览 器 可 以 解 释 VBScript 微 软 的 Internet Explo rer 支 持VBScript 但 是 不 是 所 有 浏 览 器 都 支 持 有 关 浏 览 器 能 力 的 细 节 可 查 阅 浏 览器 文 档 参 见 第 二 十 五 章 用 HTML 元 素 编 写 脚 本 中 的 创 建 可 移 植 脚 本 一节
如 果 需 要 你 可 以 在 同 一 个 页 面 上 使 用 不 同 脚 本 语 言 例 如 如 果 把 你 自己 的 脚 本 加 到 用 设 计 期 间 控 件 产 生 的 脚 本 就 会 出 现 这 种 情 况 当 使 用 设 计 期 间控 件 的 时 候 你 规 定 一 种 目 标 编 写 脚 本 平 台 客 户 机 或 服 务 器 这 种 平 台 是 由脚 本 中 默 认 语 言 确 定 的 有 关 细 节 参 见 第 二 十 四 章 用 设 计 期 间 控 件 和 脚 本对 象 编 写 脚 本 中 的 用 设 计 期 间 控 件 创 建 窗 体 一 节
如 果 你 不 用 设 计 期 间 控 件 编 写 脚 本 则 通 常 只 用 一 种 语 言 进 行 工 作 因 而你 可 以 为 你 创 建 的 每 个 新 页 面 指 定 一 种 默 认 语 言 如 果 需 要 你 可 以 为 单 个 脚本 指 定 一 种 默 认 语 言 有 关 细 节 参 见 第 二 十 五 章 用 HTML 元 素 编 写 脚 本 中的 选 择 一 种 脚 本 语 言 一 节
客 户 机 和 服 务 器 脚 本
如 果 你 的 服 务 器 是 Microsoft Internet Information Serve r(IIS) 你 便可 以 创 建 包 含 客 户 机 和 服 务 器 两 种 脚 本 的 ASP 文 件 两 种 类 型 的 脚 本 可 以 出 现同 一 个 页 面 上
客 户 机 脚 本 是 一 个 页 面 的 一 部 分 在 用 户 请 求 这 个 页 面 的 时 候 发 送 给 浏 览器 并 由 浏 览 器 运 行
服 务 器 脚 本 也 是 一 个 页 面 的 一 部 分 但 是 不 发 送 给 浏 览 器 相 反 这 些 脚本 在 页 面 被 请 求 之 后 但 在 页 面 传 递 给 浏 览 器 之 前 由 IIS 运 行 在 页 面 发 送 给浏 览 器 的 时 候 服 务 器 已 经 运 行 了 这 个 服 务 器 脚 本 并 且 已 经 从 这 个 页 面 上 去掉
执 行 客 户 机 和 服 务 器 脚 本
规 定 脚 本 是 在 客 户 机 上 运 行 还 是 在 服 务 器 上 运 行 这 是 Web 脚 本 的 一 个 重要 特 性 Web 脚 本 允 许 你 为 希 望 完 成 的 任 务 规 定 正 确 的 运 行 期 间 环 境 例 如通 常 由 客 户 机 脚 本 完 成 下 列 任 务
-
在
页 面 装 载 到 浏 览 器 的 时 候 或 对 诸 如 单 击 按 钮 的 事 件 作 出 响 应 的 时 候改 变 文 本 或 页 面 的 样 子
-
对
键 入 到 HTML 窗 体 中 的 数 据 在 发 送 给 服 务 器 之 前 进 行 验 证 例 如 要保 证 雇 员 的 ID 号 码 包 含 正 确 的 数 字 位 数 相 比 之 下 对 数 据 库 的 数 据进 行 验 证 是 服 务 器 的 常 见 任 务
-
显
示 信 息 响 应 用 户 事 件 例 如 单 击 按 钮相 反 有 些 任 务 应 当 用 服 务 器 脚 本 去 完 成
-
查
询 数 据 库 把 结 果 送 给 一 个 HTML 页 面 有 关 细 节 参 见 第 十 九 章 查看 数 据
-
根
据 某 种 条 件 例 如 口 令 查 阅 把 用 户 的 请 求 重 定 向 给 特 定 的 页 面 关于 使 用 脚 本 在 页 面 之 间 进 行 移 动 的 更 一 步 的 信 息 参 见 第 二 十 四 章 使用 设 计 期 间 控 件 和 脚 本 对 象 编 写 脚 本 中 的 跨 越 页 面 扩 展 脚 本 对 象 模型 和 第 二 十 五 章 使 用 HTML 元 素 编 写 脚 本 中 的 有 条 件 导 航
-
处
理 用 户 键 入 到 HTML 窗 体 中 的 信 息 关 于 创 建 脚 本 处 理 HTML 窗 体 进 一步 内 容 参 见 第 二 十 四 章 用 设 计 期 间 控 件 和 脚 本 对 象 编 写 脚 本 中 的为 脚 本 对 象 编 写 脚 本 和 第 二 十 五 章 使 用 HTML 元 素 编 写 脚 本 中
的 用 HTML 窗 体 收 集 信 息
尽 管 上 边 列 出 的 任 务 是 客 户 机 脚 本 或 服 务 器 脚 本 完 成 的 典 型 情 况 但 这 不是 严 格 的 规 则 例 如 你 可 以 使 用 Visual InterDev 设 计 期 间 控 件 去 创 建 服 务
器 脚 本 这 个 脚 本 对 客 户 事 件 如 单 击 按 钮 作 出 响 应 另 一 个 例 子 如 果 你的 用 户 使 用 Internet E xplorer 4 . 0 或 其 它 支 持 动 态 HTML(DHTML ) 的 浏 览 器你 可 以 编 写 一 个 应 用 从 客 户 机 浏 览 器 那 里 访 问 数 据 库
因 此 使 用 客 户 机 脚 本 还 是 使 用 服 务 器 脚 本 不 仅 取 决 于 你 要 完 成 的 任 务还 取 决 于 你 的 应 用 运 行 的 环 境 特 别 是 约 束 条 件 如 性 能 等
客 户 脚 本 处 理
客 户 脚 本 是 由 诸 如 微 软 Internet Explorer 一 类 的 浏 览 器 处 理 的 浏 览 器调 出 相 应 的 运 行 期 间 模 块 执 行 这 个 脚 本 客 户 脚 本 置 于 <SCRIPT> 和 </SCRIPT> 标 记 之 间 下 边 的 简 单 例 子 给 出 在 页 面 上 打 印 当 前 时 机 的 脚 本
<SCRIPT LA NGUAGE= VBScript >
Documen t.Write time
</SCRIPT>
你 的 页 面 可 以 包 含 许 多 脚 本 块 你 需 要 多 少 就 可 以 包 含 多 少 你 可 以 把 多个 功 能 和 子 程 序 放 到 一 个 脚 本 块 中 或 者 把 它 们 中 的 每 一 个 放 到 一 个 分 开 的 脚本 块 中
客 户 脚 本 是 在 不 同 时 间 得 到 处 理 的 具 体 什 么 时 间 取 决 于 脚 本 是 如 何 编
写 的
- 语
句 出 现 在 一 个 脚 本 块 中 但 是 不 是 过 程 函 数 或 子 程 序 的 组 成 部 分这 些 语 句 称 作 全 局 Global 脚 本 或 内 联 inline 脚 本 而 且在 浏 览 器 读 出 页 面 时 按 顺 序 处 理 例 如 下 边 给 出 一 个 全 局 脚 本
<SCRIPT LA NGUAGE= VBScript >
Documen t.Write time
</SCRIPT>
|
语 句 作 为 过 |
程 的 组 成 部 分 而 出 现 这 里 的 过 程 指 |
诸 |
如 |
函 数 |
或 |
子 |
程 |
序 |
这 |
---|---|---|---|---|---|---|---|---|---|---|
些 语 句 不 立 |
刻 执 行 而 是 在 页 面 运 行 时 和 检 查 语 |
法 |
差 |
错 的 |
时 |
候 |
进 |
行 语 |
法 | |
分 析 然 而 |
它 们 在 过 程 调 出 之 前 是 不 运 行 的 |
|||||||||
|
事 件 处 理 过 |
程 不 立 即 执 行 而 是 在 用 户 完 成 触 发 |
脚 |
本 |
的 事 |
件 |
时 |
如 单 |
击 | |
按 钮 才 执 |
行 这 个 过 程 例 如 下 边 脚 本 说 明 事 |
件 |
处 |
理 子 |
程 |
序 |
只 |
在 用 |
户 | |
单 击 表 单 中 |
Submit 提 交 按 钮 才 执 行 |
事 件 处 理 过 程 子 程 序 或 函 数 的 脚 本 可 以 出 现 在 页 面 的 任 何 地 方 因 为 它们 只 在 需 要 的 时 候 才 处 理 不 过 通 常 是 把 这 些 类 型 的 脚 本 放 在 页 面 的 前 头
在 你 编 写 客 户 机 脚 本 的 时 候 你 可 以 访 问 页 面 上 的 对 象 获 得 对 象 的 特 性或 者 编 写 对 象 的 事 件 处 理 程 序 在 工 作 中 可 以 使 用 的 对 象 准 确 列 表 取 决 于 你 的用 户 要 使 用 的 浏 览 器 类 型 更 多 内 容 参 见 第 二 十 四 章 用 设 计 期 间 控 件 和 脚本 控 件 编 写 脚 本 和 本 章 后 边 的 文 档 元 素
客 户 脚 本 可 以 直 接 同 客 户 相 互 作 用 具 体 情 况 是 对 于 输 出 要 发 出 消 息 框对 于 输 入 就 使 用 对 话 框 或 窗 体 例 如 如 果 用 户 在 一 种 窗 体 中 键 入 信 息 时 产 生一 个 错 误 客 户 脚 本 就 显 示 出 一 条 出 错 消 息 如 前 例 所 示
关 于 显 示 信 息 的 更 详 细 内 容 参 见 第 二 十 五 章 用 HTML 元 素 编 写 脚 本 中的 为 用 户 显 示 信 息 关 于 使 用 客 户 脚 本 和 服 务 器 脚 本 窗 体 的 更 多 信 息 参 见第 二 十 四 章 使 用 设 计 期 间 控 件 和 脚 本 控 件 编 写 脚 本 和 第 二 十 五 章 使 用 HTML 元 素 编 写 脚 本 中 的 用 HTML 窗 体 收 集 信 息
服 务 器 脚 本 处 理
在 Visual Int erDev 中 你 把 服 务 器 脚 本 放 到 Active Ser ver Pages ASP 文 件 中 ASP 扩 展 版 本 告 知 IIS 页 面 可 以 包 含 服 务 器 脚 本 当 IIS 读 到 该 页面 时 它 便 查 找 服 务 器 脚 本 并 处 理 这 个 脚 本 当 ASP 文 件 中 的 服 务 器 脚 本 被 处理 之 后 便 把 这 个 脚 本 从 文 件 中 去 掉 然 后 再 把 文 件 发 送 给 浏 览 器 该 文 件 中可 能 包 含 某 种 客 户 机 脚 本 浏 览 器 把 这 个 ASP 文 件 作 为 原 来 的 .htm 文 件 来 对待
在 页 面 发 送 到 浏 览 器 之 前 服 务 器 可 以 对 页 面 的 任 何 方 面 进 行 修 改 典 型情 况 是 要 完 成 任 务 再 把 任 务 的 输 出 结 合 到 页 面 的 HTML 文 本 中 但 是 服 务 器 脚本 可 以 较 容 易 地 创 建 客 户 脚 本 因 为 客 户 脚 本 除 了 在 这 个 页 面 上 再 添 加 一 些 文本 就 没 有 别 的 事 了
ASP 文 件 处 理 的 一 种 特 殊 情 况 是 Global.asa 文 件 这 个 文 件 所 包 含 的 文 本要 负 责 响 应 范 围 广 泛 的 应 用 事 件 每 次 ASP 应 用 启 动 和 关 闭 和 每 次 一 个 用 户启 动 一 个 会 话
你 可 以 在 Global.asa 文 件 中 为 这 些 事 件 创 建 服 务 器 脚 本 这 对 保 存 应 用 设置 例 如 默 认 脚 本 语 言 广 泛 应 用 变 量 初 始 化 计 数 器 维 护 等 一 些 任 务 都 是 很有 用 的 关 于 在 Global.asa 文 件 中 为 存 储 全 局 信 息 而 创 建 事 件 句 柄 的 细 节 参见 第 二 十 五 章 使 用 HTML 元 素 编 写 脚 本 中 的 共 享 动 态 信 息 一 节
当 你 在 ASP 文 件 中 编 写 服 务 器 脚 本 的 时 候 使 用 下 述 两 种 方 式 之 一 把 这 种脚 本 同 其 它 文 本 区 分 开 来
- 在
分 割 符 <% 和 %> 内 这 两 个 标 记 之 间 的 任 何 文 本 是 作 为 内 联 服 务 器 脚 本进 行 处 理 的 <% %> 分 割 符 用 于 放 在 计 算 表 达 式 的 两 边 并 且 插 入 到 页面 的 HTML 文 本 中 例 如 下 述 服 务 器 脚 本 在 页 面 上 显 示 当 前 时 间
<% respons e.write time%>
- 在
<SCRIP T> 标 记 连 同 客 户 脚 本 中 带 上 RUNAT=SERV ER 属 性 用 于把 单 独 的 过 程 例 如 函 数 和 子 程 序 括 起 来 下 边 例 子 给 出 RUNAT 属 性
<S CRIPT RUNAT=SERVER>
Function GetDate
[some script lin es here] End Function
</script>
在 Visual Int erDev HTML 编 辑 器 中 服 务 器 脚 本 呈 现 黄 色 以 便 与 交 换 机脚 本 区 别 开 来 下 边 的 图 给 出 包 括 服 务 器 脚 本 和 客 户 脚 本 的 一 个 页 面
编 辑 服 务 器 脚 本
服 务 器 脚 本 通 常 不 是 事 件 驱 动 的 除 了 用 设 计 期 间 控 件 创 建 的 服 务 器 事 件处 理 程 序 和 在 Global.asa 文 件 中 创 建 的 事 件 处 理 程 序 在 ASP 页 面 被 请 求 时服 务 器 读 取 页 面 并 从 上 到 下 处 理 整 个 服 务 器 脚 本 这 个 脚 本 完 成 你 编 写 的 计 算
和 数 据 库 访 问 并 且 计 算 所 有 表 达 式 和 变 量 按 照 需 要 调 用 独 立 过 程
因 为 这 个 脚 本 在 服 务 器 上 运 行 因 而 它 对 服 务 器 上 可 用 的 对 象 拥 有 访 问 权例 如 在 IIS 上 运 行 的 服 务 器 脚 本 可 以 引 用 ASP 应 用 会 话 请 求 和 响 应 对 象然 而 服 务 器 脚 本 却 不 能 使 用 浏 览 器 中 已 经 有 的 对 象 例 如 服 务 器 脚 本 不 能使 用 Internet E xplorer 文 档 或 窗 口 对 象
在 你 编 写 服 务 器 对 象 的 时 候 必 须 小 心 要 只 使 用 服 务 器 上 下 文 中 可 用 的对 象 关 于 在 服 务 器 脚 本 中 可 以 使 用 的 对 象 的 更 多 内 容 参 见 本 章 后 边 的 文档 元 素 和 第 二 十 四 章 用 设 计 期 间 控 件 和 脚 本 控 件 编 写 脚 本
如 果 服 务 器 脚 本 产 生 一 些 输 出 例 如 如 果 你 希 望 显 示 变 量 的 数 值 或 显 示从 一 个 数 据 库 收 到 的 一 些 记 录 你 可 以 使 用 内 联 脚 本 中 的 Response.W rite 方 法 或 使 用 缩 写 窗 体 操 作 符 把 输 出 放 到 该 页 面 上 例 如 下 边 的 简 单 页 面说 明 服 务 器 脚 本 计 算 当 前 时 间 并 把 时 间 放 到 一 个 变 量 中 接 着 在 该 页 面 上服 务 器 脚 本 变 量 的 值 被 集 成 到 一 些 HTML 文 本 中
当 页 面 被 处 理 时 服 务 器 便 计 算 Response.W rite 或 之 后 的 表 达 式
结 果 值 放 到 HTML 页 面 流 指 定 的 位 置 当 在 浏 览 器 中 显 示 这 个 页 面 时 看 上 去 有些 像 下 边 这 个 样 子
When the s cript ran,it was 1 0: 46:30 o ’ clock on 1 2/3 1 /97.
如 果 你 注 意 到 页 面 的 源 代 码 它 看 上 去 同 该 页 面 输 出 是 一 样 的 你 可 能 没看 见 源 代 码 中 的 表 达 式 <%Response .Write Time %> 或 <%-vDate%> 因 为 这 些 表 达式 是 在 页 面 送 到 浏 览 器 之 前 由 服 务 器 计 算 的
服 务 器 脚 本 可 以 产 生 任 何 类 型 的 输 出 不 仅 包 括 变 量 和 表 达 式 的 值 还 包括 HTML 标 记 文 本 以 及 事 件 客 户 脚 本
23 .3 脚 本 对 象 模 型
为 了 使 Web 应 用 的 开 发 又 快 又 轻 松 Microsoft Visual InterDev 提 供 脚本 对 象 模 型 script obj ect model 这 个 模 型 通 过 引 入 常 见 面 向 对 象 编 程 模型 用 于 对 HTML 和 脚 本 编 程 的 办 法 简 化 Web 应 用 的 开 发 这 个 模 型 大 大 简 化 了编 写 客 户 浏 览 器 和 服 务 器 之 间 相 互 作 用 应 用 脚 本 的 复 杂 性 和 数 量
Visual InterDev 脚 本 对 象 模 型 以 事 件 特 性 和 方 法 定 义 了 一 组 对 象 你可 以 用 来 创 建 你 的 应 用 或 为 应 用 编 写 脚 本 你 可 以 使 用 设 计 期 间 控 件 为 你 的 应用 创 建 可 视 界 面 然 后 编 写 脚 本 以 便 用 熟 悉 的 面 向 对 象 的 技 术 控 制 应 用
在 创 建 Web 应 用 的 时 候 脚 本 对 象 模 型 允 许 你 使 用 同 你 在 诸 如 微 软 Visual Basic 和 微 软 Access 环 境 中 创 建 应 用 所 使 用 的 非 常 类 似 的 方 式
如 果 你 把 脚 本 对 象 模 型 同 使 用 ASP 和 HTML 的 结 合 形 式 创 建 Web 应 用 情 况 比较 这 种 脚 本 对 象 模 型 是 最 容 易 理 解 的 例 如 要 创 建 一 种 窗 体 你 就 把 HTML 元素 放 到 一 个 页 面 上 包 括 文 本 框 列 表 框 和 按 钮 其 中 有 一 种 按 钮 是 典 型 的 提交 按 钮 它 可 以 产 生 向 服 务 器 送 一 种 窗 体 的 动 作 并 指 定 一 个 包 含 可 以 处 理 这种 窗 体 服 务 器 脚 本 的 ASP 页 面 在 目 的 页 面 上 必 须 手 动 检 查 浏 览 器 提 交 的 状 态而 且 同 创 建 这 种 状 态 的 对 象 没 有 关 系
注 意 : 在 动 态 HTML(DHTML ) 中 页 面 上 的 控 件 和 该 页 面 本 身 都 是 文 档 对象 模 型 的 组 成 部 分 但 是 这 个 模 型 仅 仅 施 加 于 客 户 脚 本 这 个 模 型 不包 括 服 务 器 方 的 处 理 此 外 这 种 DHTML 文 档 对 象 模 型 只 能 由 支 持 DHTML 的 浏 览 器 所 使 用
成 为 对 照 的 是 这 种 脚 本 对 象 模 型 允 许 你 以 控 件 进 行 工 作 也 允 许 你 以 使
用 标 准 面 向 对 象 技 术 的 页 面 进 行 工 作 例 如 代 替 使 用 ASP 和 HTML 所 要 求 的 复杂 窗 体 提 交 过 程 你 可 以 简 单 地 把 一 个 按 钮 放 到 一 个 页 面 上 再 为 处 理 这 种 窗体 的 敲 击 方 法 编 写 一 个 处 理 程 序 这 种 脚 本 对 象 模 型 分 离 出 一 些 事 件 例 如 敲击 事 件 这 样 你 就 可 以 在 客 户 脚 本 或 服 务 器 脚 本 中 为 这 些 事 件 编 写 处 理 程 序
脚 本 对 象 模 型 的 优 点
这 种 脚 本 对 象 模 型 具 有 如 下 优 点
-
使 用 熟 悉 的 面 向 对 象 模 型 进 行 快 速 应 用 开 发 你 可 以 采 用 标 准 面 向 对 象技 术 开 发 Web 应 用 因 为 你 要 编 写 的 脚 本 较 少 且 可 以 使 用 较 简 单 的 脚本 这 样 创 建 应 用 就 快 得 多 错 误 也 很 少
-
浏 览 器 和 平 台 彼 此 独 立 你 可 以 使 用 这 种 脚 本 对 象 模 型 而 不 管 将 访 问你 应 用 的 浏 览 器 如 何 工 作 总 是 一 样 的 不 管 你 设 计 的 应 用 是 用 于 服 务器 脚 本 的 最 大 范 围 或 是 用 于 客 户 脚 本 对 用 户 是 较 好 的 试 验 例 如闪 烁 较 少 到 服 务 器 往 返 次 数 也 很 少
-
简 化 的 窗 体 你 可 以 把 设 计 期 间 控 件 拖 放 到 页 面 上 创 建 一 种 窗 体 这 种方 式 就 同 在 Visual Bas ic 环 境 中 使 用 的 方 式 相 同 把 控 件 拖 放 到 页 面上 之 后 再 使 用 属 性 改 变 它 们 的 样 子 和 表 现 你 可 以 通 过 编 写 标 准 事 件 处理 程 序 的 办 法 处 理 窗 体 也 可 以 通 过 调 用 方 法 来 处 理 窗 体 脚 本 对 象 模型 处 理 复 杂 的 窗 体 投 递 并 分 派 正 确 的 窗 体 处 理 逻 辑
-
隔 离 应 用 逻 辑 你 可 以 很 容 易 地 在 不 同 过 程 中 其 中 包 括 其 它 页 面 上 的过 程 中 把 你 的 应 用 逻 辑 隔 离 开 而 不 是 把 这 些 应 用 同 用 户 界 面 及 导 航元 素 混 在 一 起
-
状 态 维 护 脚 本 对 象 模 型 提 供 一 种 机 制 按 照 在 客 户 机 和 服 务 器 之 间 传递 的 控 件 维 持 对 象 的 状 态 你 不 必 手 动 管 理 隐 蔽 在 字 段 中 或 会 话 中 的 状态
-
数 据 绑 定 脚 本 对 象 可 以 绑 定 在 数 据 库 字 段 上 这 样 你 就 可 以 按 照 数 据录 入 窗 体 和 数 据 编 辑 窗 体 使 用 它 们
-
简 化 页 面 导 航 这 种 脚 本 对 象 模 型 提 供 一 种 机 制 这 种 机 制 允 许 你 导 航到 其 它 页 面 上 使 用 名 字 而 不 是 指 定 目 标 页 面 的 URL 这 样 就 可 以 直 接 跳到 那 个 页 面 上 的 任 何 过 程 上
-
远 程 脚 本 你 可 以 从 一 个 页 面 上 执 行 服 务 器 脚 本 而 不 是 导 航 离 开 这 个页 面 在 传 统 的 客 户 / 服 务 器 应 用 中 这 样 就 允 许 浏 览 器 脚 本 向 服 务 器要 求 一 组 结 果 然 后 在 浏 览 器 中 进 一 步 计 算 或 通 过 HTML 改 变 这 个 页 面
脚 本 对 象 模 型 中 的 部 件
在 你 使 用 脚 本 对 象 模 型 的 时 候 不 管 你 编 写 基 于 服 务 器 的 应 用 ( 在 ASP 文 件中 ) 还 是 编 写 可 在 客 户 浏 览 器 上 执 行 的 脚 本 页 面 时 ( 在 .htmz 文 件 中 ) 你 都 使用 相 同 的 对 象
注 释 : 脚 本 对 象 模 型 是 使 用 存 储 在 脚 本 库 Script Library 中 的 脚 本实 现 的 不 要 改 变 库 中 的 内 容 否 则 脚 本 对 象 模 型 中 部 件 将 不 能 正 确工 作
开 启 脚 本 对 象 模 型
在 使 用 脚 本 对 象 模 型 之 前 你 必 须 开 启 它 它 为 页 面 构 造 脚 本 对 象 模 型 构
架
注 释 : Visual InterDev 设 计 期 间 控 件 需 要 脚 本 对 象 模 型 如 果 你 把 设 计 期间 控 件 加 到 尚 未 使 脚 本 对 象 模 型 开 启 的 页 面 上 Visual InterDev 就提 醒 你 开 启 它
为 一 个 页 面 开 启 脚 本 对 象 模 型
1 . 用 右 键 单 击 对 象 或 控 件 以 外 页 面 上 任 何 地 方 选 择 Properties , 然 后 选择 General 选 项 卡
2. 在 ASP settin gs 之 下 选 择 Enable scr ipt ing object mo del 开 启 脚
本 对 象 模 型
Visual InterDev 编 辑 器 把 脚 本 对 象 模 型 框 架 加 到 顶 部 和 底 部 的 页 面 上你 不 要 改 变 这 些 页 面 的 内 容
设 计 期 间 控 件 和 脚 本 对 象
要 为 你 的 应 用 创 建 用 户 界 面 你 可 以 使 用 Visual InterDev 设 计 期 间 控件 (design-ti me controls) 设 计 期 间 控 件 是 你 在 编 辑 器 中 进 行 工 作 创 建 Web 应 用 功 能 时 使 用 的 控 件 设 计 期 间 控 件 产 生 HTML 文 本 脚 本 有 时 候 还 用 其 它部 件 在 运 行 时 实 现 你 设 计 的 功 能
Visual InterDev 设 计 期 间 控 件 包 括 标 准 用 户 界 面 元 素 文 本 框 检 查 框列 表 框 命 令 按 钮 等 等 根 据 脚 本 对 象 模 型 产 生 运 行 期 间 文 本 使 用 设 计 期 间控 件 可 以 很 容 易 地 创 建 窗 体 并 使 用 脚 本 对 象 模 型 的 特 点 优 势 绑 定 到 数 据 上 关 于 设 计 期 间 控 件 的 细 节 参 见 Visual Int erDev 在 线 文 档 中 设 计 期 间 控 件
- 节
设 计 期 间 控 件 有 两 级 相 互 作 用 在 设 计 期 间 这 些 相 互 作 用 就 像 控 件 一 样
你 可 以 在 诸 如 Visual Bas ic 环 境 中 把 它 们 放 到 一 种 窗 体 上 你 可 以 在 HTML 编辑 器 中 同 它 们 进 行 可 视 相 互 作 用 设 置 它 们 的 属 性 规 定 它 们 的 表 现 行 为 然而 实 际 目 的 是 产 生 在 你 运 行 页 面 时 可 执 行 的 脚 本 因 此 在 你 设 置 设 计 期 间 控件 的 属 性 时 你 实 际 是 改 变 设 计 期 间 控 件 产 生 的 代 码
在 设 计 期 间 控 件 产 生 的 代 码 运 行 时 它 动 态 产 生 一 个 脚 本 对 象 这 个 脚本 对 象 是 你 编 写 脚 本 的 对 象 而 且 在 编 写 脚 本 时 设 置 对 象 的 特 性 调 用 它 的 方法 并 响 应 它 的 事 件
在 编 辑 器 中 工 作 的 时 候 你 为 设 计 期 间 控 件 设 置 的 特 性 不 同 于 运 行 时 响 应 脚本 对 象 可 用 的 特 性 但 是 这 些 特 性 是 相 关 的 例 如 设 计 期 间 控 件 的 ID 特 性 是用 来 创 建 一 个 脚 本 在 运 行 时 的 ID 特 性
在 设 计 你 的 用 户 界 面 的 时 候 你 可 以 在 属 性 窗 口 中 或 在 客 户 属 性 页 面 上 设置 设 计 期 间 控 件 的 属 性 脚 本 对 象 属 性 不 在 属 性 窗 口 中 显 示 出 来 这 是 因 为 这些 属 性 是 运 行 时 的 属 性 然 而 在 你 编 写 脚 本 时 这 些 属 性 出 现 在 IntelliSen se 语 句 完 全 下 拉 列 表 中
此 外 设 计 期 间 控 件 没 有 方 法 或 事 件 因 为 这 种 控 件 从 不 在 运 行 时 工 作 脚本 对 象 有 预 定 义 的 方 法 和 事 件 使 用 脚 本 对 象 的 特 性 你 可 以 在 IntelliSen se 语 句 完 全 下 拉 列 表 中 看 见 方 法 和 事 件 的 一 个 列 表 另 外 你 还 可 以 在 Script Outline 脚 本 大 纲 窗 口 中 看 见 这 些 为 一 个 脚 本 对 象 预 定 义 的 方 法 和 事 件
在 一 些 实 例 中 设 计 期 间 控 件 在 设 计 时 是 可 视 的 但 是 相 应 脚 本 对 象 是 不可 视 的 例 如 用 于 控 制 数 据 访 问 的 记 录 集 Recordset 控 件 在 设 计 时 是
可 视 的 因 而 你 可 以 看 见 它 的 属 性 但 是 在 页 面 运 行 的 时 候 由 记 录 集 脚本 对 象 创 建 的 脚 本 对 象 却 没 有 可 视 的 部 件 即 便 它 像 任 何 其 它 脚 本 对 象 一 样 有属 性 方 法 和 事 件
设 计 期 间 控 件 和 脚 本 对 象 的 优 势 之 一 是 不 管 你 希 望 在 服 务 器 上 工 作 还 是在 客 户 机 上 运 行 使 用 它 们 都 以 相 同 的 方 式 进 行 工 作 例 如 如 果 以 许 多 不 同浏 览 器 为 目 标 你 可 以 把 控 件 的 平 台 设 置 为 服 务 器 并 且 使 所 有 设 计 期 间 控件 产 生 的 代 码 都 在 这 个 服 务 器 上 运 行 如 果 你 的 目 标 是 把 客 户 机 作 为 平 台 所产 生 的 代 码 便 在 客 户 机 上 运 行 当 然 你 要 保 证 这 个 客 户 机 有 运 行 它 的 能 力 但是 你 同 脚 本 对 象 的 相 互 作 用 例 如 调 用 它 们 的 方 法 一 样 是 可 视 的 使 用 服务 器 脚 本 响 应 客 户 事 件 例 如 敲 击 按 钮 的 复 杂 任 务 是 建 立 在 脚 本 对 象 之 中 的
注 意 : 组 合 窗 体 的 一 种 轻 松 方 式 是 使 用 FormManage r 有 关 细 节 参 见 第 五章 演 练 中 的 简 化 数 据 录 入 页 面 和 第 三 章 数 据 库 基 础 中 的
建 立 事 件 驱 动 窗 体
页 面 对 象
脚 本 对 象 模 型 允 许 你 用 Web 页 面 作 为 在 你 的 脚 本 中 可 以 引 用 的 对 象 就 像任 何 其 它 对 象 一 样 按 照 默 认 设 置 当 前 页 面 可 作 为 一 种 对 象 并 称 作 thisPage
页 面 对 象 可 以 从 其 它 页 面 上 引 用 对 于 页 面 导 航 尤 其 是 如 果 你 的 应 用 要求 你 在 其 它 页 面 上 处 理 一 个 指 定 的 脚 本 时 这 种 引 用 能 力 是 很 有 用 的 例 如在 你 的 应 用 中 你 可 能 要 导 航 到 其 它 页 面 上 处 理 一 个 窗 体 而 导 航 到 的 其 它 页面 上 包 含 的 脚 本 要 进 行 验 证 数 据 库 更 新 及 其 它 操 作 在 HTML 模 型 中 你 把 你的 窗 体 寄 送 给 其 它 页 面 然 后 在 目 的 页 面 上 编 写 脚 本 这 就 需 要 确 定 如 何 调 用
这 个 页 面 以 及 如 何 进 行 处 理 若 是 使 用 页 面 对 象 你 可 以 在 那 个 页 面 对 象 上 调用 一 种 方 法 而 脚 本 对 象 模 型 完 成 所 有 导 航 并 为 你 进 行 分 派
例 如 在 一 个 称 作 Emplo yeeList 的 页 面 对 象 中 编 写 称 作 DoQuery 的 功 能然 后 作 为 一 种 方 法 展 示 出 来 从 另 一 个 页 面 你 可 以 像 下 边 这 样 简 单 调 用 一 种方 法 执 行 这 个 功 能
EmployeeList.nav igate.DoQuery( Accounting )
使 用 页 面 对 象 还 可 以 提 供 远 程 脚 本 编 写 手 段 远 程 脚 本 编 写 允 许 你 在 ASP 页 面 上 调 用 一 个 脚 本 功 能 进 程 在 服 务 器 上 运 行 完 成 这 个 调 用 不 用 离 开 这 个页 面 就 可 以 在 客 户 脚 本 上 进 行 通 常 的 方 式 是 你 要 离 开 当 前 页 面 在 服 务 器 上执 行 一 个 过 程 即 使 这 个 过 程 在 当 前 页 面 上 也 是 一 样 因 此 客 户 页 面 保 持 了 它的 状 态 包 括 在 调 用 服 务 器 之 前 脚 本 是 在 那 里 执 行 的
因 为 远 程 脚 本 还 可 以 异 步 执 行 你 可 以 提 供 丰 富 的 用 户 经 验 例 如 你 可以 执 行 数 据 库 查 阅 来 验 证 用 户 录 入 而 同 时 用 户 可 以 用 窗 体 继 续 进 行 工 作 详见 第 二 十 四 章 用 设 计 期 间 控 件 和 脚 本 对 象 编 写 脚 本 中 的 远 程 执 行 服 务 器脚 本 一 节
文 档 元 素
在 编 写 脚 本 的 时 候 你 可 以 操 纵 不 同 对 象 以 便 完 成 应 用 任 务 例 如 你 可以 在 一 个 客 户 脚 本 中
-
测
试 一 个 复 选 框 然 后 设 置 文 本 框 的 值
-
导 航
到 其 它 页 面 上
-
当
一 个 页 面 第 一 次 显 示 的 时 候 显 示 Java 小 程 序 的 一 个 特 定 图 形
-
通 过 把 文 本 在 整 个 屏 幕 上 移 动 重 定 文 本 或 图 形 的 大 小 等 操 作 创 建 多媒 体 效 果
在 服 务 器 脚 本 中 你 可 以 用 不 同 的 对 象 进 行 工 作 你 可 以 按 如 下 顺 序 操 纵这 些 脚 本
-
获 取
用 户 录 入 到 窗 体 中 的 信 息
-
同
数 据 库 建 立 一 条 连 接 并 对 这 条 连 接 运 行 一 次 查 询
-
确 定
当 前 浏 览 器 是 否 支 持 你 应 用 所 要 求 的 性 质
在 脚 本 中 可 以 使 用 的 对 象 取 决 于 脚 本 所 运 行 的 上 下 文 如 果 是 正 在 服 务 器脚 本 中 工 作 你 只 能 使 用 服 务 器 上 可 用 的 对 象 相 反 如 果 你 在 客 户 脚 本 上 工作 则 只 能 使 用 作 为 页 面 组 成 部 分 并 且 在 浏 览 器 中 可 用 的 对 象 或 者 你 知 道 存在 于 客 户 计 算 机 上 的 对 象
注 意 : 如 果 使 用 脚 本 对 象 模 型 和 设 计 期 间 控 件 你 就 可 以 使 用 同 样 的 脚 本 对象 在 客 户 脚 本 中 工 作 或 者 在 服 务 器 脚 本 中 工 作 详 见 第 二 十 四 章 用设 计 期 间 控 件 和 脚 本 对 象 编 写 脚 本
客 户 对 象
在 客 户 脚 本 中 你 可 以 获 得 页 面 上 对 象 的 属 性 并 调 用 它 们 的 方 法 为 这 些 对象 编 写 事 件 处 理 程 序 例 如 下 边 小 脚 本 就 是 使 用 窗 口 对 象 的 更 替 方 法 和 文 档 对象 的 标 题 属 性 显 示 当 前 文 档 的 抬 头
<SCRIPT LA NGUAGE= VBScript >
alert(d ocument.title)
</SCRIPT>
每 个 对 象 都 有 自 己 的 方 法 和 特 性 你 可 以 按 照 要 求 来 使 用 它 们 在 客 户 脚本 中 大 多 数 对 象 也 支 持 你 可 以 编 写 处 理 程 序 的 事 件 例 如 你 可 以 为 按 钮 敲击 事 件 编 写 一 个 处 理 程 序 这 个 事 件 在 敲 击 按 钮 时 出 现
在 客 户 脚 本 中 可 以 使 用 的 确 切 对 象 和 事 件 取 决 于 你 的 用 户 要 使 用 的 浏 览 器中 可 用 的 对 象 模 型 例 如 在 一 些 浏 览 器 中 你 可 以 编 写 一 种 脚 本 用 于 改 变 页面 上 的 文 本 但 是 不 是 所 有 浏 览 器 都 支 持 这 种 特 性 一 般 说 来 你 可 以 依 赖 下列 事 项
- 大
多 数 浏 览 器 ( 包 括 Internet Explorer 3.0) 至 少 支 持 HTML 3.2 级在 HTML 3.2 对 象 模 型 中 一 般 你 不 能 改 变 页 面 上 已 经 有 的 对 象 的 样 子
然 而 你 可 以 为 HTML 控 件 编 写 事 件 处 理 程 序 例 如 为 按 钮 窗 体 Java 小 程 序 ActiveX 控 件 编 写 事 件 处 理 程 序 以 及 为 整 个 文 档 编 写 处 理 程序 下 边 的 表 中 给 出 HTML 3.2 中 的 可 编 写 脚 本 对 象 的 列 表
-
某
些 浏 览 器 ( 包 括 Internet Explorer 4.0) 支 持 动 态 HTML(DHTML ) 运行 时 属 性 方 法 和 页 面 上 赋 名 对 象 的 事 件 三 方 面 提 供 全 面 实 施 你 还 可以 为 计 时 器 事 件 编 写 处 理 程 序 按 照 规 定 时 间 间 隔 移 动 文 本 或 对 象 或重 定 文 本 或 对 象 的 大 小 DHTML 为 你 提 供 对 HTML 页 面 的 控 件 级 别 同你 对 Visual Basic 中 窗 体 的 控 制 级 别 或 在 Visual Basic for Applicatio ns(VBA) 中 对 文 档 的 控 制 级 别 差 不 多 是 一 样 的
-
Visual
Int erDev 支 持 一 种 脚 本 对 象 模 型 和 设 计 期 间 控 件 允 许 你 使 用标 准 面 向 对 象 的 技 术 为 页 面 上 控 件 编 写 脚 本 详 见 第 二 十 四 章 用 设 计期 间 控 件 和 脚 本 对 象 编 写 脚 本 你 可 以 用 任 何 浏 览 器 使 用 这 种 脚 本 对象 模 型 只 要 你 使 用 Internet 信 息 服 务 器 作 为 你 的 服 务 器 就 行
在 你 编 写 脚 本 的 时 候 一 个 比 较 好 的 办 法 是 把 你 限 制 在 你 的 用 户 浏 览 器 所支 持 的 对 象 模 型 上 例 如 如 果 你 知 道 你 的 大 多 数 用 户 都 使 用 Internet Explorer
3.0 或 支 持 HTML 3.2 的 另 一 种 浏 览 器 你 就 不 应 当 使 你 的 应 用 依 靠 HTML 特性 另 一 种 办 法 是 你 可 以 编 写 你 的 应 用 测 试 一 种 具 体 浏 览 器 然 后 根 据 用 户拥 有 的 浏 览 器 展 示 特 性 关 于 测 试 浏 览 器 能 力 的 内 容 参 见 第 二 十 五 章 使 用HTML 元 素 编 写 脚 本 中 的 创 建 可 移 植 脚 本
对 象 说 明
窗 口 浏 览 器 对 象 允 许 你 确 定 有 关 浏 览 器 信 息 提 示 用 户 信 息 以 及 显示 消 息 两 个 常 用 的 装 载 和 卸 载 事 件 允 许 你 在 装 载 文 档 时 完 成 对任 务 的 初 始 化
文 档 浏 览 器 对 象 允 许 你 设 置 文 档 颜 色 确 定 当 前 和 推 荐 文 档 的 URL 获 得 文 档 抬 头 以 及 把 文 本 写 到 页 面 中 关 于 编 写 文 本 的 更 多 内容 参 见 第 二 十 五 章 使 用 HTML 元 素 编 写 脚 本 中 的 显 示 用户 信 息
窗 体 浏 览 器 对 象 允 许 你 确 定 窗 体 方 法 和 动 作 的 信 息 并 列 举 窗 体 中的 元 素 你 可 以 为 窗 体 的 提 交 事 件 编 写 处 理 程 序 以 便 指 定 在 用户 敲 击 提 交 按 钮 时 出 现 什 么 事 情 关 于 使 用 窗 体 的 更 多 内 容 参见 第 二 十 五 章 使 用 HTML 元 素 编 写 脚 本 中 的 用 HTML 窗 体 收集 信 息 一 节
提 示 :Visual InterD ev 提 供 一 些 设 计 期 间 控 件 和 一 个FormManage r 控 件 允 许 你 轻 松 创 建 窗 体 而 不 用 为HTML<form> 元 素 编 写 脚 本 详 阅 第 二 十 四 章 用 设 计 期 间 控件 和 脚 本 对 象 编 写 脚 本 和 第 三 章 数 据 库 基 础 中 的 建立 事 件 驱 动 窗 体
续 表
元 素 单 个 窗 体 元 素 如 按 钮 文 本 框 等 等 你 可 以 为 元 素 事 件 编 写 处理 程 序 例 如 进 行 敲 击 得 到 或 丢 掉 焦 点 和 修 改 更 多 内 容 参 见 第 二 十 五 章 使 用 HTML 元 素 脚 本 脚 本 中 的 用 HTML 窗 体收 集 信 息
提 示 你 可 以 使 用 Visual Int erDev 设 计 期 间 控 件 取 而 代 之 详见 第 二 十 四 章 用 设 计 期 间 控 件 和 脚 本 对 象 编 写 脚 本
Java 小 程序
ActiveX
控 件
服 务 器 对 象
把 外 部 创 建 的 对 象 加 到 页 面 上 小 程 序 放 到 页 面 上 <APPLET> 块中 对 象 放 到 <OBJECT> 块 中 Java 小 程 序 和 AcitveX 控 件 支 持 它们 自 己 的 一 组 属 性 方 法 和 你 可 以 为 之 编 写 处 理 程 序 的 事 件
如 果 你 正 编 写 的 脚 本 将 在 微 软 Internet 信 息 服 务 器 上 运 行 你 可 以 使 用 这个 服 务 器 中 内 在 的 对 象 例 如 服 务 器 的 Request 和 Response 对 象 你 可 以 使用 服 务 器 绑 定 的 部 件 但 不 是 它 内 在 的 部 分 例 如 AdRotator 部 件
BbowserCap ability 部 件 和 ActiveX Data Object(ADO) 最 后 你 可 以 使 用 在这 种 服 务 器 中 登 记 的 任 何 其 它 对 象 包 括 你 创 建 的 部 件 和 登 记 用 的 寄 存 器 本 身
使 用 服 务 器 对 象 和 部 件 是 Visual InterDev 强 有 力 的 属 性 在 你 创 建 一 个Web 应 用 的 时 候 通 常 你 不 能 控 制 用 户 拥 有 什 么 浏 览 器 也 不 能 控 制 在 用 户 计算 机 上 登 记 什 么 在 服 务 器 上 安 装 控 件 并 在 服 务 器 脚 本 中 使 用 这 些 控 件 你 可以 使 得 这 些 控 件 的 特 性 被 任 何 用 户 所 使 用 不 管 使 用 的 是 什 么 浏 览 器
在 你 编 写 服 务 器 脚 本 时 你 不 能 直 接 操 纵 客 户 对 象 例 如 浏 览 器 窗 口 HTML
窗 体 Java 小 程 序 或 者 DHTML 对 象 因 为 这 些 对 象 都 不 常 驻 于 服 务 器 上
如 果 你 用 服 务 器 的 内 在 控 件 进 行 工 作 例 如 Request 或 Response 对 象 你可 以 在 你 的 脚 本 中 简 单 地 引 用 这 些 对 象 如 下 例 所 示
<%Server( “ star ttime ” )=time%>
然 而 对 所 有 其 它 对 象 而 言 你 创 建 这 个 对 象 可 以 使 用 一 个 <OBJECT> 标记 做 这 件 事 而 在 这 个 标 记 中 你 指 定 属 性 RUNAT=SERV EWR 创 建 一 个 <OBJECT> 标 记 就 允 许 你 在 任 何 服 务 器 脚 本 中 在 这 个 页 面 上 引 用 该 对 象 把 这 个 对 象 及其 编 号 加 到 InlelliSen se 语 句 完 全 下 拉 列 表 上 例 如 下 边 创 建 一 个 引 用 一 个ADO 连 接 对 象 的 对 象
<OBJECT RU NAT= Server ID=cn PROG ID= ADODB.Conn ection >
<OBJECT>
在 你 的 脚 本 中 可 以 使 用 你 在 ID 属 性 中 分 配 的 名 字 引 用 这 个 对 象 下 边 的 语句 使 用 在 <OBJECT> 元 素 中 定 义 的 对 象
cn.Open Ap plication( Connection String )
‘ other pro cessing here cn.Close
另 一 方 面 你 可 以 使 用 该 服 务 器 的 CreateObje ct 创 建 对 象 创 建 对 象 的 实例 如 下 边 语 句 所 示
<%
Set Ad = S erver.CreateObject( MSWC.Adrot ator )
Ad`.GetAdv ertisement( /ads/adrot .txt )
%>
下 表 列 出 常 见 服 务 器 和 部 件
对 象 |
说 明 | |||
---|---|---|---|---|
请 求 |
内 在 |
IIS 对 象 |
通 过 一 次 |
HTTP 请 求 对 下 列 信 息 进 行 |
访 问 这 些 信 息 包 括 窗 体 信 息 搜 索 串 浏 览 器 信 息和 存 储 在 串 存 器 cookies 中 的 信 息 参 见 第 二 十五 章 用 HTML 元 素 编 写 脚 本 中 的 用 HTML 窗 体 收集 信 息 共 享 动 态 信 息 和 创 建 可 移 植 脚 本
响 应 内 在 IIS 对 象 通 过 向 Web 页 面 流 写 入 信 息 的 办 法 把
信 息 |
发 送 给 用 |
户 关 于 使 用 响 应 对 象 的 详 细 内 容 和 实 |
||
---|---|---|---|---|
例 |
参 见 第 二 |
十 五 章 使 用 HTML 元 素 编 写 脚 本 中 |
||
的 |
条 件 导 航 |
共 享 动 态 信 息 |
||
会 话 |
应 用 |
内 在 |
IIS 对 象 | 允 许 你 设 置 或 获 取 Web 应 用 中 页 面 之 |
间 存 |
在 的 值 |
更 多 细 节 参 见 第 二 十 五 章 用 HTML | ||
元 素 |
编 写 脚 本 |
中 的 共 享 动 态 信 息 |
||
服 务 器 |
内 在 |
IIS 对 象 | 允 许 你 创 建 在 服 务 器 上 登 记 的 实 例 对 | |
象 |
包 括 绑 定 |
的 部 件 和 你 创 建 的 对 象 |
AdRotator
BrowserCap ability TextStream 和NextLink
ActiveX 数 据 对 象
ADO
脚 本 调 试 过 程
续 表
用 IIS 绑 定 的 部 件 允 许 你 显 示 图 像 集 的 变 更 存 储和 获 得 特 定 浏 览 器 的 信 息 读 出 和 写 入 文 本 文 件 以及 创 建 一 条 通 过 页 面 的 有 序 路 径
绑 定 的 部 件 连 接 数 据 库 或 查 询 数 据 库
你 可 以 使 用 Visual InterDev 调 试 器 测 试 在 Visual Basic Scripting Edition(VB Sript) 和 JScript 中 编 写 的 脚 本 调 试 Web 页 面 同 在 传 统 开 发 环 境中 进 行 调 试 有 以 下 几 方 面 不 同
-
大
多 数 Web 应 用 都 由 在 客 户 机 上 运 行 的 脚 本 在 .htm 文 件 中 和 在 服务 器 上 运 行 的 脚 本 在 ASP 文 件 Global.asa 文 件 和 .cdf 文 件 中 组成
-
脚 本
可 以 使 用 不 同 语 言
-
脚 本
可 以 同 HTML 文 本 混 合 编 写
-
许
多 Web 应 用 不 仅 包 含 脚 本 而 且 包 含 Java 部 件 如 小 程 序 和 COM 对象
Visual InterDev 允 许 你 在 所 有 这 些 情 况 中 进 行 调 试 你 可 以 调 试 在
Internet E xplorer 本 地 版 本 中 运 行 的 脚 本
注 意 在 你 进 行 调 试 的 时 候 建 议 不 要 使 用 Internet Explorer 4.0 的 Active
Desktop 模 式
要 调 试 在 Internet 信 息 服 务 器 IIS 4.0 中 运 行 的 脚 本 可 以 在 你 的计 算 机 上 运 行 这 个 调 试 器 并 把 调 试 器 同 该 服 务 器 中 运 行 的 一 个 脚 本 连 接 起 来如 果 该 服 务 器 软 件 正 在 另 一 个 计 算 机 上 运 行 你 可 以 使 用 远 程 调 试 调 试 在这 里 运 行 的 脚 本
注 意 关 于 调 试 你 W e b 页 面 上 Java 部 件 的 有 关 内 容 参 见 Java 调 试 文 档
错 误 类 型
调 试 就 是 查 找 错 误 当 你 使 用 脚 本 进 行 工 作 时 你 可 能 遇 到 下 列 各 类 的 错误 需 要 调 试
- syntax
err or 句 法 错 在 下 列 情 况 下 出 现 如 键 入 错 误 关 键 字 多行 命 令 忘 掉 关 闭 例 如 DO...LOOP 或 者 产 生 类 似 的 错 误 如 果 一 个 脚本 包 含 一 个 句 法 错 误 这 个 脚 本 便 不 能 执 行 而 且 错 误 信 息 立 刻 显 示 在浏 览 器 上 或 服 务 器 处 理 的 页 面 上
注 意 在 某 些 编 程 环 境 中 句 法 错 误 是 指 预 处 理 错 误 编 译 错 误 和 编 译时 间 错 误
-
run-time
e rror 运 行 期 间 错 误 当 命 令 企 图 执 行 一 个 非 法 动 作 时 出现 例 如 如 果 你 企 图 用 尚 未 初 始 化 的 变 量 进 行 计 算 便 会 出 现 运 行 期间 错 误 如 果 出 现 运 行 期 间 错 误 脚 本 要 么 停 止 要 么 执 行 一 个 例 外 例行 程 序
-
logic
er ror 逻 辑 错 误 在 一 个 脚 本 执 行 的 时 候 没 出 现 句 法 错 误 和运 行 期 间 错 误 但 是 结 果 不 是 所 期 望 的 结 果 例 如 脚 本 可 能 提 示 用 户
键 入 一 个 口 令 但 是 在 键 入 错 误 口 令 之 后 仍 允 许 访 问 应 用
用 调 试 器 进 行 工 作
调 试 脚 本 的 基 本 过 程 由 下 述 任 务 组 成
-
在
你 的 Web 项 目 中 运 行 你 当 前 正 工 作 的 文 档 开 始 调 试 或 者 把 调 试 器连 接 到 正 在 浏 览 器 中 或 者 在 服 务 器 中 运 行 的 文 档 上 开 始 调 试 你 可 以及 时 启 动 调 试 器 响 应 脚 本 错 误 这 就 是 所 谓 及 时 (just-in-t ime) 调试
-
发
出 中 断 命 令 停 止 脚 本 执 行 你 还 可 以 在 脚 本 中 设 置 断 点 在 断 点 处调 试 器 将 自 动 停 止 在 你 停 止 一 个 过 程 的 时 候 它 的 原 代 码 就 显 示 出 来
-
观
察 脚 本 的 状 态 检 查 变 量 或 属 性 的 值 列 出 运 行 过 程 调 用 堆 栈
-
控
制 单 个 语 句 或 过 程 的 执 行 步 进 观 察 你 应 用 的 效 果 也 观 察 变 量值 或 属 性 值
-
跳
过 跨 过 step over 或 步 进 通 过 步 入 step into 当 前过 程 所 调 用 的 过 程 如 果 有 多 个 过 程 或 线 程 在 活 跃 你 可 以 移 到 另 一 个过 程 中 再 从 那 里 接 着 进 行
注 意 你 不 能 在 HTML 编 辑 器 中 的 设 计 视 图 Design vie w 或 快速 视 图 Quick view 中 用 调 试 器 进 行 工 作 要 进 行 调 试 应 转换 到 源 视 图 Source vie w 中
要 想 允 许 你 完 成 上 述 任 务 调 试 器 就 要 包 含 下 述 命 令 和 窗 口
-
进 程 对 话 框 允 许 你 把 调 试 器 连 接 到 浏 览 器 中 或 服 务 器 上 运 行 的 文 档上 这 个 文 档 可 以 包 含 在 不 是 作 为 Visual Int erDev 项 目 组 成 部 分 的 页
面 中 你 可 以 调 试 在 本 地 计 算 机 运 行 着 的 脚 本 或 者 把 脚 本 连 接 到 在 远程 计 算 机 上 运 行 的 进 程 上 进 行 调 试 例 如 连 接 到 在 服 务 器 上 运 行 的 ASP 文 件 上
-
运 行 文 档 Running Do cuments 窗 口 允 许 你 查 看 调 试 器 可 以 使 用的 文 档 列 表
-
HTML
编 辑 器 的 源 视 图 Source view 显 示 你 正 在 调 试 的 脚 本 源 代码 或 部 件 源 代 码 如 果 你 正 进 行 调 试 的 脚 本 或 部 件 是 你 当 前 Visual InterDev 项 目 的 组 成 部 分 你 就 可 以 排 除 错 误 然 后 重 新 运 行 文 档
再 一 次 进 行 测 试
-
在
Visual InterDev HTM L 编 辑 器 中 你 可 以 设 置 和 清 除 断 点 在 调 试器 到 达 断 点 之 后 你 可 以 使 用 调 试 Debug 菜 单 上 的 命 令 步 进 到 你脚 本 的 各 个 行 中 如 果 你 到 达 你 脚 本 中 要 调 出 另 一 个 过 程 一 个 函 数 子 程 序 或 小 程 序 的 某 一 点 你 就 进 入 步 入 这 个 过 程 或 运 行 它 跨过 并 且 停 在 下 一 行 上 在 任 何 一 点 你 都 可 以 跳 到 当 前 过 程 的 末 点 步出 前 进 到 下 个 断 点
-
在
本 地 窗 口 中 你 可 以 看 到 当 前 过 程 中 变 量 的 值 你 还 可 以 规 定 希望 调 试 器 显 示 指 定 表 达 式 的 值 例 如 属 性 的 值 这 要 在 观 察 Watch 窗 口 中 组 建 观 察 表 达 式
-
要
设 置 和 改 变 值 你 就 使 用 立 即 Immediate 窗 口 在 这 个 窗 口 中你 可 以 计 算 任 何 表 达 式 也 可 以 键 入 脚 本 命 令 看 它 们 的 效 果 你 还 可以 观 察 和 改 变 观 察 窗 口 中 的 值
-
使
用 调 用 堆 栈 Call Stack 窗 口 你 可 以 移 到 任 何 当 前 激 活 的 过
程 中
关 于 使 用 调 试 器 命 令 和 窗 口 的 细 节 参 见 Visual Int erDev 在 线 文 档
了 解 脚 本 处 理
了 解 客 户 脚 本 如 何 处 理 错 误 如 何 解 决 有 助 于 你 成 功 地 调 试 客 户 脚 本
处 理 客 户 脚 本
客 户 脚 本 是 由 Internet Explorer 处 理 的 这 个 浏 览 器 调 用 相 应 的 运 行 期间 模 块 处 理 VBScript 脚 本 或 JScript 脚 本
在 Web 文 档 装 入 到 浏 览 器 的 时 候 脚 本 要 进 行 语 法 分 析 在 这 个 语 法 分 析阶 段 浏 览 器 要 报 告 它 发 现 的 任 何 句 法 错 误
在 完 成 一 段 脚 本 的 语 法 分 析 之 后 浏 览 器 就 执 行 它 全 局 Global 或内 联 inline 脚 本 将 立 即 执 行 这 两 种 脚 本 不 是 事 件 处 理 子 程 序 或 函 数 的 组 成 部 分 事 件 处 理 子 程 序 函 数 以 及 由 其 它 过 程 调 用 的 过 程 都 立 即 进 行 语
法 分 析 但 是 在 一 个 事 件 触 发 之 前 或 被 另 一 个 过 程 调 用 之 前 都 不 执 行
客 户 脚 本 处 理
如 果 在 执 行 一 个 客 户 脚 本 时 出 现 运 行 期 间 错 误 则 显 示 出 一 条 错 误 消 息并 且 含 有 错 误 的 脚 本 停 止 下 来 但 文 档 中 的 其 它 客 户 脚 本 可 以 继 续 运 行 除 非
你 启 动 调 试 器 如 果 重 新 调 用 含 有 错 误 的 脚 本 错 误 消 息 就 再 一 次 显 示 出 来根 据 你 使 用 的 语 言 你 可 以 在 脚 本 中 包 含 一 些 语 句 以 便 俘 获 运 行 期 间 错 误
并 运 行 你 自 己 的 错 误 过 程 例 如 在 VBScript 中 你 可 以 使 用 ON ERROR 语 句 建立 自 己 的 错 误 陷 井 有 关 细 节 参 见 你 的 脚 本 语 言 文 档
处 理 服 务 器 脚 本
大 多 数 服 务 器 脚 本 都 不 是 事 件 驱 动 的 在 ASP 文 件 被 请 求 的 时 候 服 务 器读 出 页 面 并 从 头 到 尾 处 理 所 有 服 务 器 脚 本 这 个 页 面 包 含 属 于 内 联 的 脚 本其 中 带 有 HTML 文 本 如 下 页 图 所 示
服 务 器 脚 本 处 理
不 是 所 有 服 务 器 脚 本 都 立 即 执 行 同 客 户 脚 本 一 样 服 务 器 脚 本 可 以 包 含函 数 和 子 程 序 这 些 功 能 和 子 程 序 只 在 被 其 它 过 程 调 用 时 才 执 行
Global.asa 文 件 是 一 种 特 殊 情 况 在 这 个 文 件 中 的 Applicatio n_OnStart
和 Session_On Start 过 程 只 对 一 个 应 用 或 一 个 会 话 执 行 一 次 因 此 要 想 使 调试 这 些 事 件 容 易 一 些 你 就 必 须 在 文 件 中 嵌 入 调 试 语 句 有 关 细 节 参 见 第 二十 六 章 调 试 页 面 中 的 调 试 Global.asa 文 件 一 节