第 二 十 四 章 用 设 计 期 间 控 件 和 脚 本 对 象 编 写 脚 本
要 为 你 的 应 用 创 建 用 户 界 面 你 可 以 使 用 Visual I nterDev 脚 本 对 象 模 型和 Visual InterDev 设 计 期 间 控 件 Visual InterDev 设 计 期 间 控 件 包 含 标 准用 户 界 面 元 素 文 本 框 复 选 框 列 表 框 命 令 按 钮 等 等
在 你 的 Web 页 面 运 行 的 时 候 设 计 期 间 控 件 以 脚 本 对 象 模 型 为 基 础 创 建 脚本 对 象 你 可 以 为 应 用 添 加 功 能 办 法 是 编 写 一 些 脚 本 使 你 编 写 的 脚 本 同 这些 脚 本 对 象 一 起 工 作
24 . 1 用 设 计 期 间 控 件 创 建 窗 体
使 用 脚 本 对 象 模 型 的 主 要 优 点 之 一 就 是 简 化 处 理 Web 页 面 窗 体 中 信 息 所 需要 的 脚 本 借 助 于 使 用 脚 本 对 象 模 型 和 设 计 期 间 控 件 你 可 以 为 你 的 应 用 创 建用 户 界 面 而 且 与 你 在 Visual Bas ic 和 Access 中 创 建 窗 体 所 使 用 的 方 式 非 常相 似
你 可 以 使 用 下 表 列 出 的 设 计 期 间 控 件 创 建 用 户 界 面
Button |
Textbox |
Listbox |
---|---|---|
Label |
Grid |
Checkbox |
OptionGrou p |
Recordset |
RecordsetN avBar |
注 意 : 设 计 期 间 控 件 是 用 存 储 在 Script Library 脚 本 库 中 的 脚 本 实 现 的不 要 改 变 这 个 库 中 的 内 容 否 则 控 件 不 能 正 确 工 作
选 择 目 标 平 台
在 把 控 件 加 到 你 的 页 面 上 之 前 你 必 须 决 定 你 的 应 用 将 使 用 什 么 平 台 服务 器 还 是 客 户 机 你 的 选 择 将 决 定 设 计 期 间 控 件 如 何 创 建 以 及 事 件 在 那 里 出现 请 参 考 下 表 内 容
目 标 平 台 |
结 果 |
如 果 选 中 |
|||
---|---|---|---|---|---|
服 务 器 |
|
.asp 文 件 服 务 器 脚 本 |
中 |
创 |
你 的 应 用 将 可 由 各 种 浏 览 器 使 用 优 点 包 括 |
建 它 的 属 性 方 法 和 事 件 只 在 服 务 器 脚 本 中 可 用 |
|
应 用 在 所 有 浏 样 运 行 |
览 | 器 | 上 | 同 | |
---|---|---|---|---|---|---|---|
|
脚 本 对 象 模 型 事 件 例 如 敲 击 |
|
你 希 望 可 以 对 |
应 | 用 | 逻 | 辑 |
在 服 务 器 脚 本 中 处 理 更 多 内 |
和 数 据 库 连 接 |
串 | 信 | 息 | 的 | ||
容 参 见 本 章 后 边 为 脚 本 对 |
访 问 进 行 控 制 |
象 编 写 脚 本
- 数 据 绑 定 出 现 在 服 务 器 上
客 户 机 你 的 页 面 可 以 是 一 个 .asp 文 件或 一 个 .htm 文 件
-
使 用 客 户 脚 本 创 建 脚 本 对 象它 们 的 属 性 方 法 和 事 件 只 在服 务 器 脚 本 中 可 以 使 用
-
事 件 在 客 户 脚 本 中 处 理 更 多内 容 参 见 本 章 后 边 为 脚 本对 象 编 写 脚 本
-
数 据 绑 定 出 现 在 客 户 机 和 服 务器 两 个 地 方
应 用 将 只 能 由 支 持 动 态HTML(DHTML ) 的 浏 览 器 如微 软 的 Internet Explorer
4.0 所 使 用 典 型 的 优 点是 用 户 使 用 方 便 此 外 你的 应 用 可 以 使 用 DHTML 对 象模 型
了 解 目 标 平 台 的 重 要 性 不 仅 仅 决 定 脚 本 对 象 在 哪 里 创 建 还 决 定 你 如 何 为
它 编 写 脚 本 例 如 对 某 个 控 件 的 平 台 是 服 务 器 它 相 应 的 脚 本 对 象 就 在 服 务器 脚 本 中 创 建 你 只 能 访 问 服 务 器 脚 本 中 的 脚 本 对 象 属 性 方 法 和 事 件 脚 本对 象 对 客 户 脚 本 而 言 是 不 可 用 的 相 反 情 况 也 是 对 的 如 果 控 件 的 目 标 平 台 是客 户 机 相 应 脚 本 对 象 的 属 性 事 件 和 方 法 在 服 务 器 脚 本 中 是 不 可 用 的
选 中 一 种 目 标 平 台 并 不 意 味 着 所 有 设 计 期 间 控 件 都 为 这 种 平 台 生 成 脚 本 某 一 个 控 件 的 脚 本 平 台 和 某 个 脚 本 的 脚 本 平 台 取 决 于 该 控 件 是 如 何 使 用 的例 如 对 窗 体 中 Save 按 钮 的 目 标 平 台 可 以 是 服 务 器 于 是 它 的 脚 本 就 可 以 把 信息 保 存 在 一 个 数 据 库 中 但 是 另 一 个 脚 本 ( 甚 至 对 同 一 个 按 钮 ) 可 以 在 客 户机 上 运 行 以 便 在 数 据 保 存 以 前 对 数 据 进 行 验 证
你 可 以 为 单 个 页 面 选 中 一 个 目 标 平 台 或 者 使 用 项 目 的 默 认 平 台
为 页 面 指 定 目 标 平 台
1 . 转 换 到 Source 视 图 上
-
右 键 单 击 该 页 面 选 中 Properties
-
在 Property P ages 窗 口 中 选 中 General 选 项 卡
-
在 DTC script ing platform 下 选 择 Server 或 Client
注 意 : 如 果 你 改 变 目 标 平 台 已 有 的 事 件 处 理 脚 本 不 能 自 动 改 变 以 反 映 新的 设 置 但 是 你 可 以 手 动 做 这 件 事 例 如 当 把 目 标 平 台 从 服 务 器改 成 客 户 机 时 服 务 器 <SCRIPT RUNAT= ” Server ” > 块 中 的 事 件 处 理 程序 需 要 移 到 客 户 机 的 <SCRIPT> 块 中 详 见 本 章 后 边 的 为 脚 本 对 象编 写 脚 本 一 节
如 果 你 希 望 在 任 何 时 间 都 使 用 同 一 种 平 台 你 可 以 为 项 目 设 置 默 认 目 标 平
台 此 后 你 创 建 的 所 有 页 面 都 将 反 映 你 的 默 认 设 置
为 项 目 指 定 目 标 平 台
1 . 在 Project Ex plorer 中 右 键 单 击 项 目 然 后 选 择 Properties 2. 在 Property P ages 窗 口 中 选 中 Editor Def aults 选 项 卡
3. 在 DTC script ing platform 下 选 择 Server 或 Client
注 意 : 如 果 你 已 经 有 了 一 些 页 面 上 边 有 设 计 期 间 控 件 改 变 项 目 默 认 并不 改 变 对 这 些 页 面 的 设 置
按 照 默 认 设 置 页 面 上 的 所 有 设 计 期 间 控 件 都 从 当 前 页 面 遗 传 给 目 标 平 台然 而 你 可 以 按 单 个 控 件 改 变 目 标 平 台 例 如 你 页 面 上 的 一 些 设 计 期 间 控 件 可以 绑 定 到 一 个 数 据 库 上 并 用 服 务 器 作 为 目 标 平 台 其 它 控 件 不 能 绑 定 数 据 并使 用 客 户 机 作 为 目 标 平 台
注 意 : 数 据 绑 定 设 计 期 间 控 件 必 须 使 用 同 一 个 目 标 平 台 作 为 要 绑 定 的 记 录 集
对 象
为 单 个 控 件 指 定 目 标 平 台
1 . 转 换 到 Source 视 图
-
右 键 单 击 该 控 件 然 后 选 中 Properties
-
在 Property P ages 窗 口 中 选 中 General 选 项 卡
-
在 scripting platform 下 选 择 Client 或 Server
向 页 面 添 加 控 件
你 可 以 使 用 拖 放 办 法 把 设 计 期 间 控 件 加 到 页 面 上 然 后 设 置 它 们 的 属 性
添 加 设 计 期 间 控 件
1 . 保 证 你 设 置 的 选 项 可 以 查 看 图 形 控 件 从 View 菜 单 中 选 中 View Controls Graphicall y
注 意 : 想 把 这 个 选 项 设 置 为 默 认 选 项 要 使 用 Options 对 话 框 中 的 HTML
节 点
- 从 Toolbox 的 Design-Tim e Controls 选 项 卡 把 设 计 期 间 控 件 拖 到 你 的 页
面 上
如 果 对 某 个 页 面 的 目 标 平 台 是 服 务 器 而 脚 本 对 象 模 型 还 没 有 对 这 个 页 面
开 启 则 提 示 你 开 启 它 你 必 须 对 设 计 期 间 控 件 开 启 脚 本 对 象 模 型 工 作 才 能正 常 进 行
注 意 : 不 要 使 用 HTML<FORM> 标 记 定 义 窗 体 脚 本 对 象 模 型 为 你 创 建 一 种 窗
体
- 右 键 单 击 该 控 件 然 后 选 中 Properties 出 现 该 控 件 的 客 户 Properties
窗 口
- 按 要 求 为 控 件 设 置 选 项
注 意 : 当 你 在 HTML 编 辑 器 中 打 印 一 个 页 面 时 某 些 设 计 期 间 控 件 可 能 不 显示 你 所 设 置 的 值 如 果 你 在 一 个 页 面 上 放 上 多 个 设 计 期 间 控 件 例 子例 如 如 果 你 把 多 个 Textbox 或 者 Button 控 件 放 到 一 个 页 面 上 第二 个 控 件 和 后 边 的 控 件 将 打 印 显 示 它 们 的 默 认 值
按 照 默 认 设 置 设 计 期 间 控 件 使 用 它 们 的 图 形 表 示 形 式 在 Design 视 图 和
Source 视 图 中 显 示 出 来 例 如 Button 设 计 期 间 控 件 就 作 为 按 钮 显 示 出 来
你 可 以 选 择 以 文 本 形 式 观 察 控 件 然 而 这 种 控 件 在 文 本 模 式 中 的 时 候 不
能 同 页 面 上 的 其 它 控 件 进 行 通 信 这 就 使 得 该 控 件 不 能 正 常 作 用
注 意 : A S P 页 面 不 能 正 常 出 现 在 快 速 Quick 视 图 中 因 为 快 速 视图 不 运 行 服 务 器 脚 本 因 而 如 果 脚 本 对 象 的 目 标 平 台 是 服 务 器 快速 视 图 就 不 允 许 你 预 览 脚 本 对 象
你 可 以 切 除 复 制 和 粘 贴 设 计 期 间 控 件 然 而 只 有 在 复 制 控 件 的 图 形 版本 而 不 是 文 本 版 本 的 情 况 下 你 才 能 成 功 地 做 这 些 事
为 了 便 于 规 定 设 计 期 间 控 件 的 选 择 可 使 用 客 户 特 性 页 面 来 设 置 它 们 的 属
性
设 置 设 计 期 间 控 件 的 属 性
- 右
键 单 击 该 控 件 然 后 选 中 Properties
或 者
在 Properties 栅 格 中 移 到 (Custom) 然 后 单 击 该 属 性 数 值 段 中 的 按
钮
每 个 设 计 期 间 控 件 都 支 持 不 同 的 选 项 要 了 解 你 可 为 其 设 置 属 性 的 细 节请 按 Property P ages 对 话 框 中 的 F 1 键
设 计 期 间 控 件 在 页 面 上 产 生 脚 本 以 实 现 相 应 的 脚 本 对 象 你 可 预 览 产 生的 文 本
预 览 产 生 的 文 本
1 . 转 换 到 Source 视 图
2. 右 键 单 击 设 计 期 间 控 件 然 后 选 中 Show Run-t ime Text
你 可 以 永 久 地 把 设 计 期 间 控 件 转 换 成 运 行 期 间 文 本 以 便 离 开 所 需 要 的 脚本 去 创 建 脚 本 对 象 但 舍 去 用 于 同 其 它 控 件 进 行 通 信 的 信 息 以 显 示 图 形 控 件
如 果 你 希 望 定 制 所 生 成 的 文 本 你 就 可 能 这 样 做 但 是 这 不 是 使 用 设 计 期间 控 件 进 行 工 作 的 推 荐 方 式
把 设 计 期 间 控 件 永 远 转 换 成 文 本
- 在
Source 视 图 中 右 键 单 击 设 计 期 间 控 件 然 后 选 中 Convert to Run-time T ext
告 诫 : 转 换 成 运 行 期 间 文 本 是 一 种 单 向 操 作 你 不 能 反 向 操 作 返 回 到 图 形 视图 只 有 你 感 到 定 制 成 控 件 运 行 期 间 文 本 很 方 便 的 你 才 应 进 行 这 样的 转 换
用 设 计 期 间 控 件 创 建 窗 体
在 使 用 脚 本 对 象 模 型 和 设 计 期 间 控 件 的 时 候 不 要 使 用 HTML<FORM> 标 记 创建 窗 体 相 反 你 要 把 你 需 要 的 设 计 期 间 控 件 拖 到 页 面 上
提 示 : 使 用 设 计 期 间 控 件 组 建 一 种 窗 体 的 轻 松 方 式 是 使 用 FormManage r 有关 细 节 参 见 第 五 章 演 练 中 的 简 化 数 据 录 入 页 面 和 第 三 章 数据 库 基 础 中 的 建 立 事 件 驱 动 窗 体
要 想 对 单 个 控 件 定 义 特 定 的 行 为 你 可 以 在 脚 本 中 编 写 事 件 处 理 程 序 不要 添 加 HTML Submit 按 钮 而 是 添 加 Save 按 钮 去 调 用 窗 体 处 理 方 法 如 下 边VBScript 例 子 所 示
Sub btnSave_onclick ProcessForm()
End sub
窗 体 处 理 过 程 可 以 在 页 面 的 任 何 地 方 可 以 用 请 求 页 面 上 控 件 数 值 的 办 法从 窗 体 中 提 取 数 值 下 边 的 例 子 测 试 称 为 txtName 文 本 框 的 数 值
Sub Pro cessForm()
If txt Name.value = |
“” then |
||
---|---|---|---|
Txt Name.value = |
“ Please ent er |
a |
name! ” |
Else
‘ etc.
End if End sub
24 .2 为 脚 本 对 象 编 写 脚 本
使 用 脚 本 对 象 模 型 和 设 计 期 间 控 件 的 主 要 好 处 之 一 是 便 于 编 写 脚 本 以 定 义应 用 的 行 为 脚 本 对 象 模 型 使 得 你 的 Web 页 面 使 用 起 来 就 像 Visual Basic 或
Access 中 的 窗 体 一 样 |
把 设 计 期 间 控 件 拖 到 页 面 上 之 后 |
你 就 可 使 用 熟 悉 的 |
脚 |
---|---|---|---|
本 技 术 设 置 它 们 的 属 性 |
并 为 事 件 编 写 处 理 程 序 |
但 是 用 脚 本 对 象 模 型 进 行 工 作 和 在 其 它 环 境 中 进 行 工 作 还 是 有 一 些 不 同 在 下 边 的 几 小 节 中 将 介 绍 如 何 为 脚 本 对 象 编 写 脚 本 其 中 包 括 与 其 它 环 境 的差 别
为 目 标 平 台 编 写 相 应 脚 本
目 标 平 台 规 定 了 脚 本 在 哪 里 运 行 因 而 也 就 决 定 了 你 的 脚 本 可 以 做 什 么 当 目 标 平 台 是 服 务 器 的 时 候 你 可 以 使 用 脚 本 对 象 模 型 和 ASP 编 程 模 型 其 中包 括 Microsoft Internet I nformation Server (I IS) Internet 信 息 服 务 器
对 象 相 反 如 果 你 的 目 标 平 台 是 客 户 机 这 个 脚 本 对 象 模 型 就 用 动 态 HTML(DHTML
扩 展 文 档 对 象 模 型
若 编 写 脚 本 你 必 须 清 楚 它 在 哪 里 运 行 你 不 要 企 图 使 用 与 这 些 上 下 文 无关 的 过 程 例 如 如 果 你 的 目 标 平 台 是 服 务 器 就 不 要 试 着 使 用 类 似 于 MsgBox 功 能 或 使 用 告 警 方 法 为 用 户 直 接 显 示 消 息 即 便 这 些 功 能 可 以 正 常 工 作 一 般而 言 它 们 都 会 产 生 错 误 结 果 它 们 还 是 把 消 息 显 示 在 服 务 器 上 而 不 是 显 示 给用 户
改 变 目 标 平 台
如 果 目 标 平 台 是 服 务 器 脚 本 块 的 RUNAT 属 性 (attribute ) 将 设 置 为
SERVER 如 果 目 标 平 台 是 客 户 机 则 没 有 RUNAT 属 性
如 果 你 对 一 个 页 面 改 变 目 标 平 台 则 必 须 手 动 加 上 或 去 掉 影 响 脚 本 块 的RUNAT 属 性 例 如 如 果 目 标 平 台 设 置 为 客 户 机 的 情 况 下 你 一 开 始 就 把 设 计期 间 控 件 加 到 一 个 页 面 上 脚 本 块 看 上 去 可 能 是 这 样
<SCRIP LAN GUAGE= ” VBScript ” >
如 果 接 着 把 目 标 平 台 改 变 为 服 务 器 你 就 必 须 加 上 一 个 RUNAT 属 性 如 下边 例 子 所 示
<SCRIP LAN GUAGE= ” VBScript ” RUNAT=SER VER>
这 就 可 能 不 仅 仅 是 调 整 问 题 还 须 了 解 其 它 特 定 平 台 的 特 性 其 中 包 括
-
客
户 脚 本 可 以 为 用 户 显 示 消 息 如 果 你 把 平 台 转 换 成 服 务 器 你 必 须去 掉 或 更 换 MsgBox 或 告 警 呼 叫
-
客
户 脚 本 可 以 从 DHTML 对 象 模 型 中 引 用 对 象 包 括 窗 口 文 档 和 其 它如 果 你 的 脚 本 使 用 这 些 对 象 你 必 须 在 改 变 成 服 务 器 平 台 时 发 出 告 警
-
服 务 器 脚 本 必 须 用 默 认 页 面 语 言
在 页 面 顶 部 有 @LANGUAGE= attr ibute
规 定 的 语 言 编 写 或 者 必 须 在 <SCRIPT> 块 中 包 含 一 种 LANGUAGE 属 性
- 服
务 器 脚 本 不 能 访 问 某 些 调 用 返 回 的 值 例 如 onkeyup 事 件 返 回 的 值
测 试 脚 本 对 象
要 在 合 适 的 位 置 测 试 你 的 页 面 HTML 编 辑 器 中 的 Quick View 快 速 视 图 在 本 地 运 行 因 而 它 不 处 理 服 务 器 脚 本 所 以 如 果 你 的 目 标 平 台 是 服 务 器就 不 会 有 脚 本 对 象 出 现 在 Quick View 中 而 应 使 用 浏 览 器 从 Web 服 务 器 查 看 页面
使 用 浏 览 器 进 行 测 试
- 在
Project Explorer 中 右 键 单 击 文 件 的 名 字 进 行 测 试 然 后 选 择
View in Br owser
引 用 脚 本 对 象 和 属 性
在 你 的 脚 本 中 你 可 以 使 用 在 创 建 设 计 期 间 控 件 的 时 候 为 脚 本 对 象 分 配 的
名 字 引 用 脚 本 对 象 你 可 以 像 通 常 那 样 读 写 大 多 数 属 性 并 把 它 们 的 名 字 带 上圆 点 (.) 加 到 对 象 引 用 子 上
例 如 如 果 你 已 经 把 一 个 Textbox 设 计 期 间 控 件 拖 到 页 面 上 并 且 为 它 起名 叫 做 txtName 你 可 以 通 过 获 得 其 特 性 值 的 办 法 读 到 其 当 前 内 容 如 下 所 示
<SCRIPT LA NGUAGE= ” JAVASCRIPT ”
function g etlName
{
fname = txtName.value;
}
</SCRIPT>
注 意 : 对 象 和 特 性 在 JScript 和 JavaScript 中 是 区 分 大 小 写 的
按 照 默 认 设 置 在 你 键 入 脚 本 对 象 名 字 并 在 后 边 跟 一 个 圆 点 (.) 的 时 候
IntelliSen se 的 弹 出 将 显 示 与 你 工 作 使 用 的 脚 本 对 象 相 对 应 的 所 有 属 性 和 方法
当 脚 本 对 象 模 型 开 启 的 时 候 你 可 以 使 用 对 象 名 字 thisPage 引 用 当 前 页面 或 者 如 果 你 已 经 指 定 它 作 为 页 面 对 象 就 可 以 使 用 其 页 面 对 象 名 字 例如 下 列 语 句 设 置 当 前 页 面 的 cancelEven 属 性 值
thisPage.c an c elEvent=tr ue
注 释 : thisPage 对 象 不 出 现 在 Script Outline 脚 本 大 纲 窗 口 中 或IntelliSen se 下 拉 菜 单 中 除 非 你 把 PageObject 设 计 期 间 控 件 加 到页 面 上 但 是 这 个 thisPage 对 象 在 运 行 期 间 是 可 用 的 并 且 你 可用 对 它 编 写 脚 本 甚 至 你 没 有 使 用 PageObject 控 件 也 是 一 样
某 些 值 按 照 成 对 的 方 法 进 行 访 问 一 个 获 取 方 法 获 取 特 性 值 一 个 写 入方 法 写 入 属 性 值 例 如 你 可 以 检 查 Checkbox 脚 本 对 象 的 状 态 办 法 是 调 用其 getCheck 方 法 并 使 用 setCheck 方 法 设 置 它 的 值 下 边 的 例 子 说 明 这 种 属性 的 类 型
Function t oggLeCheckBox
If check box 1 .getChecked() th en Check box 1 .setChecked(0)
Else
Check box 1 .setChecked( 1 ) End if
End Functi on
对 应 每 个 脚 本 对 象 所 支 持 的 属 性 列 表 参 见 Visual InterDev 在 线 文 档 中的 Script Obj ect 脚 本 对 象
调 用 方 法 和 功 能
调 用 脚 本 对 象 的 方 法 所 使 用 的 方 式 同 你 对 待 任 何 脚 本 都 是 一 样 的 例 如如 果 你 把 Listbox 设 计 期 间 控 件 拖 到 页 面 上 你 可 以 通 过 调 用 其 addItem 方 法的 方 式 植 入 它 如 下 列 脚 本 所 示
注 意 : JScript 和 JavaScript 对 方 法 名 字 是 区 分 大 小 写 的
响 应 脚 本 对 象 事 件
每 个 脚 本 对 象 都 可 以 产 生 一 组 预 先 确 定 的 或 隐 含 的 implicit 事 件 例如 对 应 于 Button 设 计 期 间 控 件 的 脚 本 对 象 可 以 产 生 一 个 敲 击 事 件 而 对 应 于Textbox 设 计 期 间 控 件 的 脚 本 对 象 可 以 产 生 一 个 onchange 事 件
注 意 : 你 可 以 把 这 组 事 件 加 以 扩 充 使 一 个 对 象 给 予 响 应 这 样 就 可 以 使 用浏 览 器 产 生 的 任 何 事 件 详 见 本 章 后 边 扩 展 一 个 对 象 的 事 件 一 节
要 想 为 脚 本 对 象 编 写 处 理 程 序 就 要 使 用 对 象 的 名 字 和 要 处 理 的 事 件 创 建一 个 过 程 你 可 以 使 用 你 的 应 用 使 用 的 浏 览 器 所 支 持 的 任 何 语 言 编 写 事 件 处 理程 序
例 如 如 果 你 创 建 称 作 btnDisplay 的 按 钮 你 可 以 对 它 的 onclick 敲 击
事 件 编 写 句 柄 在 VBScript 中 处 理 程 序 看 上 去 像 下 边 的 样 子
提 示 : 使 用 脚 本 大 纲 窗 口 创 建 事 件 处 理 程 序 在 脚 本 大 纲 窗 口 中为 你 所 使 用 的 对 象 扩 展 节 点 然 后 双 击 你 希 望 编 写 处 理 程 序 的 事 件 名字 有 关 细 节 参 见 Visual InterDev 在 线 文 档 中 的 脚 本 大 纲 窗 口
注 意 : 脚 本 对 象 事 件 只 在 响 应 用 户 一 个 动 作 时 才 出 现 在 程 序 改 变 时 不 出现 例 如 用 户 在 Listbox 脚 本 对 象 中 选 择 一 项 onchange 事 件 就 激发 然 而 如 果 你 使 用 脚 本 语 句 改 变 选 择 则 不 激 发 事 件
设 计 期 间 控 件 的 一 个 重 要 特 性 是 你 可 以 根 据 目 标 脚 本 平 台 的 位 置 ( 可 以 在 客户 机 上 也 可 以 在 服 务 器 上 ) 为 脚 本 对 象 编 写 事 件 处 理 程 序 在 用 户 单 击 一 个 按 钮的 时 候 事 件 实 际 上 是 在 客 户 机 上 出 现 然 而 如 果 你 的 目 标 脚 本 平 台 是 服 务器 你 在 服 务 器 脚 本 中 编 写 处 理 程 序 响 应 那 个 事 件 就 好 像 事 件 在 服 务 器 上出 现 一 样
首 先 事 件 被 捕 获 然 后 同 其 它 脚 本 对 象 值 信 息 一 起 作 为 邮 递 内 容 的 组 成部 分 发 送 出 去 然 后 在 服 务 器 处 辅 助 脚 本 对 象 模 型 过 程 决 定 要 处 理 一 个 事件 并 调 用 你 的 事 件 处 理 程 序 在 服 务 器 脚 本 完 成 的 时 候 被 刷 新 的 页 面 送 回到 浏 览 器 中 在 服 务 器 脚 本 中 每 处 理 一 次 事 件 就 执 行 一 次 类 似 的 循 环
对 大 多 数 情 况 这 个 过 程 对 用 户 和 对 你 的 脚 本 都 是 不 可 见 的 但 下 列 情 况
除 外
-
在
服 务 器 脚 本 中 处 理 事 件 比 在 客 户 机 脚 本 中 要 慢 因 为 涉 及 到 来 往 于服 务 器
-
你
必 须 知 道 事 件 处 理 程 序 在 哪 里 运 行 不 要 企 图 使 用 不 在 服 务 器 中 或不 在 客 户 机 上 工 作 的 过 程
扩 展 一 个 对 象 的 事 件
每 个 脚 本 对 象 有 一 组 预 先 确 定 的 或 隐 含 的 可 响 应 事 件 但 是 你 可 能 希 望 发挥 其 它 事 件 的 优 势 这 些 事 件 指 由 浏 览 器 产 生 的 并 由 你 的 脚 本 对 象 使 用 的 事 件
最 典 型 的 情 况 是 如 果 你 使 用 设 计 期 间 控 件 并 且 你 的 目 标 脚 本 平 台 是 客户 机 你 可 能 希 望 发 挥 在 DHTML 文 档 对 象 模 型 中 可 用 事 件 的 优 势
例 如 textbox 脚 本 对 象 支 持 一 种 隐 含 的 你 可 以 为 其 编 写 处 理 程 序 的onchange 事 件 然 而 在 客 户 机 上 你 还 可 能 希 望 为 onkeypress 事 件 或 其 它事 件 编 写 处 理 程 序
你 可 以 扩 展 这 组 对 一 个 对 象 可 用 的 事 件 办 法 是 通 告 advising 一 个事 件 或 在 事 件 出 现 的 时 候 登 记 一 个 被 通 告 的 对 象 在 你 通 告 一 个 事 件 之 后你 可 以 为 那 个 事 件 或 对 象 编 写 事 件 处 理 程 序 就 像 你 对 任 何 其 它 对 象 一 样你 可 以 用 撤 销 对 事 件 通 告 的 办 法 注 销 事 件 通 告
每 个 对 象 都 支 持 一 种 通 告 方 法 从 而 允 许 你 登 记 一 个 特 定 事 件 在 你 发 出通 告 的 时 候 你 指 定 事 件 名 字 和 一 个 功 能 名 字 这 个 功 能 是 在 该 事 件 出 现 的 时候 要 调 用 的 实 际 上 是 用 于 这 个 事 件 的 事 件 处 理 程 序 名 字
提 示 : 一 般 说 来 通 告 事 件 只 有 在 你 的 脚 本 目 标 平 台 是 客 户 机 时 才 是 现 实的 如 果 你 的 平 台 是 服 务 器 并 且 你 通 告 诸 如 onkeypress 之 类 的 事件 每 次 事 件 出 现 都 会 往 返 一 次 服 务 器 在 这 种 情 况 下 每 次 都 击 键
在 任 何 时 候 你 都 可 以 通 告 一 个 事 件 或 撤 销 通 告 一 个 事 件 通 常 是 在 装 载 一个 页 面 的 时 候 发 出 通 告 或 撤 销 通 告 对 应 客 户 脚 本 目 标 平 台 而 言 你 为 窗 口 对象 的 装 载 事 件 创 建 一 个 处 理 程 序 并 在 这 里 调 用 通 告 方 法
下 边 的 例 子 说 明 如 何 在 页 面 开 始 的 时 候 发 出 通 告 把 DHTML onke ypress 事件 发 送 给 称 作 Textbox 1 的 文 本 框 当 这 个 onkeypress 事 件 激 发 并 发 送 给 Textbox 的 时 候 将 调 用 checkkeys 功 能 这 种 通 告 方 法 的 结 果 是 把 称 作objAdviseT extbox 1 的 对 象 通 告 出 去 如 果 你 过 一 会 儿 需 要 撤 销 这 个 事 件 通 告的 话 你 还 要 用 到 这 个 对 象
你 在 通 告 方 法 中 指 定 的 功 能 工 作 形 式 很 像 任 何 一 个 事 件 处 理 程 序 如 果该 事 件 传 递 参 数 你 便 可 以 使 用 DHTML 对 象 事 件 方 法 得 到 这 些 参 数 下 边 示 出在 前 边 的 例 子 中 onkeypress 事 件 的 处 理 程 序 这 个 处 理 程 序 检 查 在 Textbox 1 对 象 中 出 现 每 次 击 键 并 且 只 把 击 键 数 复 制 给 对 象 Textbox2
在 你 不 再 需 要 该 事 件 的 通 告 时 就 调 用 对 象 撤 销 通 告 方 法 注 销 它 这 种 撤销 通 告 方 法 需 要 通 告 方 法 返 回 通 告 对 象 和 事 件 名 字 下 边 示 出 调 用 撤 销 通 告 的例 子
Textbox 1 .un advise( “ onkeypress ” ,objAdvise Textbox 1 )
俘 获 客 户 机 事 件
如 果 页 面 的 目 标 平 台 是 服 务 器 事 件 处 理 程 序 便 作 为 服 务 器 脚 本 来 执 行然 而 在 一 些 实 例 中 你 可 能 希 望 俘 获 事 件 即 在 事 件 传 递 给 服 务 器 之 前 先 处理 客 户 脚 本 中 的 事 件 例 如 你 可 能 希 望 俘 获 客 户 机 脚 本 中 的 Save 按 钮 的 击 键事 件 以 便 在 发 送 给 服 务 器 之 前 验 证 用 户 信 息
俘 获 事 件 只 在 目 标 平 台 是 服 务 器 的 情 况 下 才 是 有 用 的 如 果 事 件 已 经 开 始在 客 户 机 上 处 理 就 不 需 要 俘 获 这 个 事 件 因 为 它 也 不 需 要 传 递 给 服 务 器
俘 获 服 务 器 上 的 事 件
- 为 当
前 页 面 的 onbeforser verevent 事 件 编 写 处 理 程 序 这 个 事 件 激 发
之 后 立 刻 转 发 到 服 务 器 该 处 理 程 序 的 语 法 如 下
function t hispage_onbeforeserv erevent( objectName . EventName )
objectName 参 数 中 包 含 激 发 该 事 件 对 象 的 名 字 而 eventName 参 数 包 含 要转 发 到 服 务 器 上 的 事 件 名 字
注 销 服 务 器 上 的 事 件
- 把
cancelEven t 特 性 设 置 为 真
下 边 是 针 对 Delete 删 除 按 钮 说 明 如 何 俘 获 按 钮 敲 击 事 件 的 例 子 该 脚本 提 示 用 户 在 进 行 下 一 步 之 前 要 确 认 是 否 删 除
转 变 参 数 值
-
些 事 件 处 理 程 序 和 方 法 用 事 件 调 用 来 接 收 参 数 如 果 你 的 目 标 脚 本 平 台是 服 务 器 并 且 过 程 调 用 是 到 服 务 器 上 往 返 一 次 的 结 果 那 么 参 数 数 据 类 型 就转 换 成 字 符 串 到 服 务 器 上 往 返 一 次 会 在 下 述 情 况 中 出 现
-
客 户 机 上 的 一 个 动 作 例 如 敲 击 按 钮 是 在 服 务 器 脚 本 中 处 理 的
-
客 户 机 脚 本 中 的 过 程 调 用 在 服 务 器 脚 本 中 实 现 的 一 种 方 法
-
你
在 另 一 个 页 面 上 调 用 一 个 页 面 对 象 方 法 有 关 细 节 参 见 下 一 节 跨越 页 面 扩 展 脚 本 对 象 模 型
-
客
户 产 生 远 程 脚 本 调 用 去 调 用 ASP 页 面 有 关 细 节 参 见 本 章 后 边的 远 程 执 行 服 务 器 脚 本
-
在 上 述 任 何 一 种 情 况 中 接 收 参 数 的 过 程 都 必 定 把 参 数 转 换 成 所 需 要 的 相应 数 据 类 型 例 如 布 尔 值 转 换 成 字 符 串 真 和 假 如 果 你 编 写 一 个 接 收布 尔 参 数 的 一 个 过 程 你 应 当 使 用 如 下 所 示 的 脚 本 对 它 进 行 测 试
脚 本 对 象 实 例
下 边 示 出 包 含 属 性 方 法 和 事 件 的 完 整 脚 本 块 实 例 这 个 页 面 是 一 个 简 单的 计 算 器 带 有 两 个 文 本 框 分 别 叫 做 txtNumber 1 和 txtNumber2 用 户 向 文本 框 中 键 入 数 字 用 户 从 lstOperato rs 中 选 择 一 个 操 作 符 当 用 户 敲 击btnCalcula te 的 时 候 计 算 结 果 就 显 示 在 lblResult 中 如 下 所 示
24 .3 跨 越 页 面 扩 展 脚 本 对 象 模 型
使 用 设 计 事 件 控 件 和 脚 本 对 象 模 型 允 许 你 使 用 面 向 对 象 的 标 准 技 术 创 建页 面 并 编 写 脚 本 然 而 Web 应 用 在 一 个 关 键 性 方 面 不 同 于 其 它 开 发 环 境 这些 应 用 通 常 都 建 造 一 种 页 面 集 合
在 一 个 简 单 应 用 中 你 可 以 把 一 些 链 接 简 单 加 到 其 它 页 面 上 当 用 户 敲 击一 条 链 接 时 浏 览 器 将 顺 着 链 接 读 取 页 面 并 显 示 这 个 页 面 然 而 对 更 复 杂 的应 用 须 使 用 更 加 完 善 的 链 接 技 术 例 如 你 的 应 用 可 能 要 求 链 接
-
有 条 件 地 跳 到 不 同 页 面 上
-
在 用 户 另 一 个 页 面 的 时 候 处 理 这 个 页 面 上 的 指 定 脚 本
-
在
多 个 页 面 上 导 航 为 你 的 应 用 提 供 服 务 器 处 理 例 如 数 据 库 查 询 脚 本 对 象 模 型 跨 越 页 面 进 行 扩 展 帮 助 你 用 这 些 类 型 需 求 来 设 计 应 用 你
可 以 使 用 脚 本 对 象 模 型 设 计 页 面 作 为 页 面 对 象 page objec ts
页 面 对 象 是 一 种 ASP 页 面 上 面 包 含 你 在 应 用 中 使 用 的 服 务 器 脚 本 这 个页 面 上 的 过 程 即 函 数 或 子 程 序 可 以 变 成 页 面 对 象 的 方 法
例 如 你 可 能 在 应 用 中 有 一 个 ASP 页 面 用 一 种 窗 体 调 用 这 个 页 面 以 显 示雇 员 列 表 目 标 页 面 上 的 过 程 为 显 示 这 个 列 表 建 造 不 同 的 查 询 按 不 同 顺 序 使 用 不 同 字 段 或 者 使 用 不 同 选 择 依 据 当 你 把 这 个 页 面 转 换 成 页 面 对 象 的 时候 你 可 规 定 这 些 过 程 中 的 一 种 过 程 作 为 一 种 方 法 然 后 可 从 应 用 的 其 它 页 面上 激 活 调 用 这 些 方 法
页 面 对 象 还 允 许 你 创 建 属 性 这 些 属 性 维 持 到 服 务 器 上 多 次 往 返 的 状 态页 面 对 象 为 你 提 供
-
简
化 的 导 航 可 以 使 用 标 准 对 象 引 用 子 在 应 用 中 的 其 它 页 面 上 进 行 导航 不 必 追 踪 页 面 的 URL
-
在 另 一 个 页 面 上 执 行 指 定 脚 本 的 简 易 方 式 借 助 于 把 过 程 作 为 方 法 来输 出 你 可 以 直 接 跳 到 另 一 个 页 面 的 指 定 过 程 上 不 用 编 写 脚 本 去 对隐 蔽 窗 体 元 素 或 查 询 字 符 串 进 行 语 法 分 析
-
维
护 状 态 信 息 的 手 段 你 可 以 在 一 个 页 面 对 象 上 定 义 属 性 用 来 规 定页 面 寿 命 会 话 或 应 用 期 间 维 护 它 们 的 值
-
从
浏 览 器 中 显 示 的 一 个 页 面 上 执 行 服 务 器 脚 本 的 方 式创 建 一 个 页 面 对 象 的 基 本 步 骤 是
-
指 定 一 个 页 面 为 一 个 页 面 对 象
-
把 过 程 作 为 方 法 输 出 到 页 面 上
-
定 义 该 页 面 对 象 将 支 持 的 属 性
-
引 用 在 你 的 脚 本 中 你 将 使 用 的 任 何 其 它 页 面 对 象 这 些 对 象 可 能 在 该页 面 上 也 可 能 在 其 它 页 面 上
把 页 面 规 定 为 对 象
你 可 以 把 任 何 ASP 页 面 规 定 作 为 页 面 对 象 为 此 你 要 使 用 页 面 对 象 设 计期 间 控 件
注 意 : 页 面 对 象 是 用 存 储 在 脚 本 库 Script Library 中 的 脚 本 实 现 的不 要 改 变 这 个 库 中 的 内 容 否 则 页 面 对 象 会 工 作 不 正 常
规 定 一 个 页 面 作 为 一 个 对 象
1 . 在 HTML 编 辑 器 中 创 建 或 打 开 一 个 .asp 文 件
- 为 这 个 页 面 开 启 脚 本 对 象 模 型
要 保 证 你 已 经 把 选 项 设 置 为 观 察 图 形 控 件 从 View 菜 单 中 选 择 View Controls Graphically 要 想 把 这 个 选 项 设 置 为 默 认 值 便 使 用 选 项 对话 框 中 的 HTML 节 点
-
从
Toolbox 的 Design-Tim e Controls 选 项 卡 上 把 PageObject 控 件 拖到 你 的 页 面 上 你 可 以 把 这 个 控 件 拖 到 该 页 面 的 任 何 地 方 但 是 它 必 须在 脚 本 对 象 模 型 块 的 框 架 之 中
-
在
PageObject 控 件 上 的 Name 框 中 键 入 这 个 页 面 对 象 的 名 字 这 便 是你 可 以 用 来 引 用 脚 本 中 对 象 的 名 字
你 给 出 页 面 对 象 的 名 字 被 登 记 在 Visual Int rDev 项 目 中 因 此 这 些 名 字 在任 何 其 它 页 面 上 都 可 以 使 用 甚 至 可 把 这 个 页 面 移 到 其 它 位 置 它 的 页 面 对 象名 字 仍 然 不 变
过 程 作 为 方 法 输 出
使 用 页 面 对 象 的 主 要 好 处 之 一 是 你 可 以 把 应 用 任 务 作 为 可 以 轻 松 地 从 其 它脚 本 调 用 的 方 法 来 输 出 这 样 做 可 大 大 简 化 代 码 的 结 构 消 除 在 页 面 之 间 传 送变 量 所 需 要 的 时 间 和 工 作 分 配 相 应 的 例 行 程 序 ......
页 面 对 象 支 持 两 类 方 法
- 导 航 方 法 Navigate methods 是 由 一 个 客 户 页 面 调 用 的 这 个 客 户页 面 希 望 跳 到 ASP 页 面 运 行 这 里 的 一 个 过 程 然 后 可 能 跳 到 其 它 什
么 地 方 导 航 常 用 于 处 理 某 种 窗 体
- 执
行 方 法 Execute methods 是 由 一 个 客 户 页 面 调 用 的 这 个 客 户 页面 希 望 使 用 远 程 脚 本 去 执 行 一 个 脚 本 功 能 经 常 使 用 执 行 方 法 验 证 用户 键 入 的 用 于 检 索 数 据 库 的 值 或 者 执 行 一 次 数 据 库 查 询 把 一 个 控 件植 入 到 一 个 页 面 上
所 有 页 面 对 象 都 有 一 个 默 认 方 法 叫 做 show() 这 个 方 法 显 示 页 面 的 内 容这 个 方 法 是 在 页 面 上 其 它 方 法 被 处 理 之 后 才 调 用 的
为 页 面 对 象 创 建 方 法
1 . 如 果 页 面 已 经 没 有 一 个 控 制 就 把 PageObject 控 件 加 到 页 面 上 并 给
PageObject 控 件 一 个 名 字
- 在 一 个 拥 有 属 性 RUNAT=SERV ER 的 脚 本 块 中 编 写 过 程 函 数 或 子 程 序 这 个 过 程 可 以 有 任 意 数 目 的 参 数 但 是 所 有 参 数 都 是 用 值 传 递 的
例 如 下 列 函 数 创 建 一 次 查 询 字 符 串
注 意 : 参 数 转 变 成 字 符 串 的 时 间 是 在 你 调 用 一 个 页 面 对 象 方 法 的 时 候 这 样这 些 参 数 就 可 以 成 功 地 跨 越 W e b 进 行 传 递 在 你 的 页 面 对 象 脚 本 中应 当 把 参 数 值 转 变 成 所 需 要 的 相 应 数 据 类 型
- 右 键
单 击 PageObject 控 件 然 后 选 择 Properties 以 显 示 Property Pages
对 话 框
- 确
定 哪 种 方 法 将 在 导 航 中 使 用 或 被 执 行 然 后 在 Navigate methods 或Execute me thods 之 下 的 列 表 中 寻 找 第 一 个 空 行 从 下 拉 列 表 中 选 择 你 希望 展 现 作 为 方 法 的 过 程
注 意 : 有 可 能 展 现 同 一 种 方 法 既 作 为 导 航 方 法 又 作 为 执 行 方 法 然 而 方 法的 基 本 过 程 必 须 编 写 成 可 以 适 应 两 种 调 用 类 型
为 页 面 对 象 定 义 属 性
页 面 对 象 允 许 你 展 现 属 性 这 些 属 性 基 本 上 是 全 局 变 量 你 可 以 在 三 个 级别 上 查 看 这 些 属 性 页 面 会 话 和 应 用
-
页 面 作 用 域 属 性 page-scope properti es 使 得 一 种 属 性 在 一 个 页 面上 的 任 何 地 方 都 可 以 被 脚 本 所 使 用 直 到 你 导 航 到 另 一 个 页 面 位 置
-
对
话 作 用 域 属 性 session-sc ope properties 在 你 的 项 目 中 你 导航 到 任 何 页 面 上 都 可 使 用 对 话 值 使 用 IIS 会 话 变 量 进 行 存 储
-
应
用 作 用 域 属 性 applicatio n-scope properti es 是 你 应 用 中 任 何用 户 都 可 使 用 的 属 性 应 用 值 使 用 IIS 应 用 变 量 进 行 存 储
你 还 可 以 规 定 在 客 户 脚 本 服 务 器 脚 本 或 者 两 种 脚 本 中 使 用 属 性 如 果你 规 定 一 种 属 性 作 为 一 种 客 户 属 性 你 可 以 进 一 步 规 定 它 可 读 可 写 或 者 只 读
服 务 器 属 性 总 是 可 读 可 写 的
为 一 个 页 面 对 象 创 建 属 性
1 . 如 果 页 面 已 经 没 有 一 个 控 件 就 把 PageObject 控 件 加 到 页 面 上 并 给
PageObject 控 件 一 个 名 字
-
右 键 单 击 PageObject 控 件 选 择 Properties 显 示 Property P ages 对 话框 然 后 选 择 Properties 选 项 卡
-
在
Name 栏 中 寻 找 第 一 个 空 行 然 后 键 入 你 希 望 创 建 的 属 性 名 字
-
从 其
它 栏 中 选 择 新 属 性 性 质
-
寿 命 lifetime 选 择 属 性 在 页 面 退 出 以 前 都 可 用 还 是 按 照 会 话或 应 用 值 决 定 是 否 可 用
-
客
户 client 选 择 属 性 在 客 户 脚 本 中 是 只 读 还 是 可 写 又 可 读 如果 你 选 择 None 则 属 性 在 客 户 脚 本 中 不 可 用
-
服
务 器 server 选 择 Read/Write 使 属 性 在 服 务 器 脚 本 中 可 用 如果 选 择 None 则 不 可 用
-
要 使 得 特 性 可 在 你 的 脚 本 中 访 问 页 面 对 象 就 要 对 这 些 脚 本 实 现 get() 和set() 方 法 例 如 如 果 你 定 义 一 个 称 为 Color 颜 色 的 特 性 你 可 以 使 用getColor() 读 取 其 值 用 setColor() 方 法 设 置 属 性 值 有 关 细 节 参 见 本 章 后边 访 问 页 面 对 象 属 性
引 用 其 它 页 面
你 可 以 用 thisPage 的 默 认 页 面 对 象 名 字 调 用 方 法 和 使 用 属 性 然 而 如 果
你 希 望 从 其 它 页 面 对 象 上 访 问 这 些 方 法 和 属 性 你 必 须 首 先 在 当 前 页 面 上 为 那个 页 面 创 建 一 个 引 用 子
引 用 其 它 页 面 对 象
1 . 如 果 页 面 已 经 没 有 一 个 控 件 就 把 PageObject 控 件 加 到 页 面 上 并 给PageObject 控 件 一 个 名 字 如 果 你 的 脚 本 目 标 是 服 务 器 脚 本 对 象 模 式必 须 对 该 页 面 开 启
- 右 键 单 击 PageObject 控 件 选 择 Properties , 以 便 显 示 Property P ages
对 话 框 然 后 选 中 Reference 选 项 卡
-
在 Name 栏 单 击 三 点 按 钮 以 显 示 Create URL 对 话 框
-
选
择 你 希 望 作 为 页 面 对 象 而 引 用 的 .asp 文 件 键 入 选 项 决 定 页 面 对 象应 当 如 何 调 用 然 后 单 击 OK 要 了 解 这 个 选 项 的 帮 助 在 Create URL 对话 框 中 按 F 1 键
调 用 页 面 对 象 方 法
你 可 以 用 两 种 方 式 调 用 页 面 对 象 的 方 法 用 导 航 方 式 和 执 行 方 式 当 你 完成 一 个 页 面 希 望 跳 到 另 一 个 页 面 并 在 那 里 处 理 脚 本 的 时 候 用 导 航 方 式 调 用一 种 方 法 这 同 在 HTML 脚 本 中 导 航 到 一 个 URL 的 情 况 很 类 似 一 次 单 向 跳 跃除 非 在 导 航 之 前 使 用 一 个 页 面 对 象 保 存 当 前 页 面 的 状 态 例 如 你 可 能 从 一 个页 面 上 的 用 户 那 里 收 集 查 询 参 数 然 后 跳 到 另 一 个 页 面 你 实 际 在 那 里 创 建 并执 行 查 询
与 此 相 对 应 的 用 执 行 方 式 调 用 方 法 类 似 于 熟 悉 的 面 向 对 象 的 方 法 调 用
你 在 某 个 地 方 调 用 脚 本 而 且 执 行 任 务 并 返 回 然 而 用 执 行 方 式 调 用 的 方 法是 异 步 运 行 的 调 出 方 法 的 页 面 依 然 保 留 在 浏 览 器 中 用 户 可 以 继 续 用 这 个 页面 进 行 工 作
只 在 运 行 客 户 脚 本 的 情 况 下 你 才 用 执 行 方 法 调 用 方 法 而 且 调 出 的 方 法在 服 务 器 上 例 如 在 用 户 填 充 表 格 的 时 候 一 个 客 户 脚 本 可 能 调 用 服 务 器 页面 上 的 一 种 方 法 去 完 成 一 次 数 据 库 查 阅
调 用 页 面 对 象 方 法
1 . 在 当 前 页 面 上 对 你 希 望 使 用 的 页 面 对 象 创 建 一 个 引 用 子 有 关 细 节 参 见本 章 前 边 的 引 用 其 它 页 面 一 节
- 在 你 的 脚 本 中 使 用 下 述 调 用 类 型 中 的 一 种 类 型 调 用 页 面 对 象 方 法
pageObject . navigate .methodNam e(parameters) pageObject . execute .methodNam e(parameters)
这 里
-
pageObject 是 你 在 前 边 对 一 个 页 面 对 象 创 建 的 引 用 子
-
导 航 和 执 行 都 是 确 定 如 何 处 理 方 法 调 用 的 页 面 对 象 的 子 对 象
-
methodName 是 你 希 望 调 用 的 pageObject 方 法 名 字
-
parameters 是 你 要 传 递 给 方 法 的 参 数 列 表 所 有 参 数 都 用 值 传 递
注 意 : 参 数 可 以 在 你 调 用 一 个 页 面 对 象 方 法 的 时 候 转 变 成 字 符 串 这 样 参 数就 可 以 成 功 地 在 W e b 之 间 进 行 传 递 在 你 的 页 面 对 象 脚 本 中 你 应 当把 参 数 值 转 变 成 与 要 求 所 适 应 的 数 据 类 型
下 边 的 脚 本 示 出 一 些 简 单 的 处 理 窗 体 当 用 户 敲 击 客 户 页 面 上 List Now 按
钮 时 这 个 按 钮 的 onclick 处 理 程 序 就 提 取 该 页 面 上 一 个 列 表 框 中 的 值 然 后调 用 对 象 poListEmpl oyees 上 的 一 种 方 法 以 便 进 行 处 理 在 这 个 例 子 中 用户 信 息 作 为 参 数 传 递 给 页 面 对 象 的 CreateList 方 法
访 问 页 面 对 象 特 性
当 你 为 一 个 页 面 对 象 定 义 一 个 属 性 的 时 候 脚 本 对 象 模 型 创 建 一 个 get() 方 法 和 一 个 set() 方 法 你 可 以 用 这 些 方 法 访 问 属 性 例 如 如 果 你 定 义 了 一种 叫 做 UserName 的 属 性 你 就 可 以 使 用 方 法 getUserNam e 读 取 这 个 属 性 的 值
并 且 使 用 setUserNam e 设 置 这 个 属 性 的 值 如 下 边 例 子 所 示
new User = Pa geObj 1 .Nav igat e.get UserN ame()
Pag eObj 1 .Nav igate .setU serN ame(t xtUse rName .Val ue)
在 使 用 这 些 属 性 进 行 工 作 的 时 候 你 需 要 知 道 它 们 的 寿 命 如 果 你 已 经 定义 了 属 性 的 寿 命 例 如 定 义 为 页 面 只 有 当 你 离 开 这 个 页 面 并 显 示 另 一 个 页面 的 时 候 才 获 取 并 设 置 这 个 属 性 的 值 再 一 次 调 出 同 一 个 页 面 执 行 一 种 方 法以 便 返 回 作 用 于 页 面 上 的 属 性 值 然 而 在 你 导 航 到 其 它 页 面 之 后 该 属 性 将复 原
24 .4 远 程 执 行 服 务 器 脚 本
如 果 你 已 经 创 建 了 一 些 ASP 页 面 作 为 页 面 对 象 你 就 可 以 远 程 调 用 这 些 页面 上 的 方 法 也 就 是 说 你 可 以 在 一 个 客 户 页 面 装 载 到 一 个 浏 览 器 的 情 况 下无 需 导 航 离 开 这 个 客 户 页 面 就 可 以 执 行 一 个 ASP 页 面 上 的 一 种 方 法
因 为 你 没 有 离 开 客 户 页 面 它 的 值 依 然 保 留 着 客 户 脚 本 也 可 以 继 续 处 理不 需 要 复 杂 的 策 略 去 保 存 页 面 之 间 的 值 在 这 个 期 间 服 务 器 脚 本 可 以 执 行 服务 器 相 应 的 过 程 例 如 数 据 库 查 阅 在 一 个 过 程 完 成 的 时 候 服 务 器 可 以 把 这些 刚 刚 得 到 的 结 果 发 送 给 客 户 机 而 不 是 重 新 窗 体 化 或 者 重 新 发 送 整 个 页 面 这 样 就 降 低 了 服 务 器 的 负 荷
你 可 以 用 两 种 方 式 执 行 服 务 器 脚 本
-
**同
步 方 式** 你 的 脚 本 调 用 远 程 过 程 并 等 待 返 回 如 果 你 在 继 续 进 行 以前 等 待 远 程 过 程 的 结 果 这 种 方 式 非 常 有 用
-
**异
步 方 式** 你 的 脚 本 调 用 一 个 远 程 脚 本 然 后 继 续 进 行 处 理 这 个 页 面对 进 行 工 作 的 用 户 保 持 可 用 在 Web 应 用 中 异 步 调 用 是 很 有 用 的 因为 请 求 到 达 服 务 器 并 且 返 回 来 这 样 一 个 远 程 过 程 可 能 要 很 长 时 间
产 生 同 步 远 程 过 程 调 用
远 程 脚 本 编 程 使 用 ASP 页 面 对 象 技 术 被 调 用 的 页 面 是 一 个 ASP 页 面 对 象而 且 这 个 页 面 上 有 你 已 经 展 现 出 来 的 方 法 这 个 客 户 页 面 可 能 是 一 个 .htm 文件 也 可 能 是 .asp 文 件 上 面 有 调 用 上 述 页 面 对 象 方 法 的 客 户 脚 本
要 使 远 程 脚 本 从 一 个 客 户 页 面 调 用 一 个 服 务 器 页 面 就 要 使 用 页 面 脚 本 执
行 子 脚 本 执 行 子 脚 本 不 从 你 调 用 的 方 法 中 返 回 单 个 值 而 是 返 回 一 个 调 用对 象 call objec t 这 个 调 用 对 象 是 包 含 返 回 信 息 和 有 关 调 用 过 程 状 态 信 息的 对 象
最 常 用 的 属 性 是 调 用 对 象 的 return_val ue 特 性 这 个 属 性 包 含 由 远 程 过 程计 算 出 来 的 或 查 阅 出 来 的 单 个 值 其 它 调 用 对 象 属 性 允 许 你 获 取 远 程 过 程 调 用状 态 有 关 的 更 多 信 息
产 生 同 步 远 程 过 程 调 用
1 . 在 当 前 页 面 上 创 建 你 希 望 使 用 页 面 对 象 的 引 用 子 有 关 细 节 参 见 本 章前 边 的 引 用 其 它 页 面 和 跨 越 页 面 扩 展 脚 本 对 象 模 型 两 节
- 在 你 的 客 户 脚 本 中 使 用 如 下 语 法 调 用 过 程
pageObject .execute. methodName
注 意 : 远 程 脚 本 是 用 存 储 在 脚 本 库 Script Library 中 的 脚 本 实 现 的不 要 改 变 库 的 内 容 否 则 远 程 脚 本 将 不 能 正 常 工 作
例 如 下 述 函 数 是 在 客 户 脚 本 中 调 用 的 用 于 验 证 信 用 卡 要 完 成 验 证 需 要 在 页 面 对 象 poSignIn 中 调 用 验 证 方 法 远 程 过 程 返 回 的 值 在 调 用 对 象 验 证的 return_val ue 属 性 中 是 可 用 的
异 步 调 用 方 法
在 你 异 步 调 用 远 程 脚 本 过 程 的 时 候 你 必 须 在 调 用 脚 本 中 包 括 额 外 处 理以 便 确 定 远 程 调 用 是 什 么 时 候 完 成 的 为 此 你 要 指 定 调 用 返 回 过 程 callback procedure 这 个 过 程 是 在 远 程 过 程 完 成 时 调 用 的 功 能
要 使 用 调 用 返 回 功 能 你 需 要 在 客 户 页 面 中 创 建 一 种 辅 助 功 能 去 处 理 远程 脚 本 的 结 果 你 还 可 用 在 客 户 脚 本 中 有 选 择 地 创 建 一 个 错 误 处 理 进 程 如 果远 程 脚 本 遇 到 错 误 条 件 就 调 用 这 个 进 程
产 生 异 步 远 程 过 程 调 用
- 在 使 用 execute 对 象 调 用 一 种 方 法 的 时 候 要 使 用 类 似 下 面 的 语 法其 中 包 含 调 用 返 回 功 能 的 名 字
co = PageO bject.execute.Method ( p 1 , p2, ca llBack )
其 中
co 是 调 用 对 象
p 1 ,p2 是 被 调 用 过 程 所 要 求 的 参 数 你 可 以 按 要 求 传 递 许 多 参 数
callBasck 在 远 程 过 程 完 成 的 时 候 被 调 用 方 法 的 名 字 在 远 程 方 法 完成 的 时 候 立 即 跳 到 你 指 定 的 进 程
例 如 下 边 给 出 一 个 按 钮 它 的 onclick 属 性 指 出 为 了 验 证 信 用 卡 而 应 当调 用 一 个 远 程 过 程 调 用 远 程 过 程 把 displayRes ults 函 数 指 定 为 过 程 的 调 用返 回
DisplayRes ults 函 数 把 远 程 过 程 调 用 对 象 接 收 过 来 作 为 一 个 参 数 并 测试 这 个 参 数 确 定 信 用 卡 是 否 有 效
注 意 : 你 还 可 以 使 用 远 程 脚 本 以 调 用 页 面 脚 本 执 行 方 法 的 外 部 作 用 域 有 关
远 程 脚 本 的 细 节 和 更 多 内 容 参 见 微 软 公 司 的 脚 本 W e b 站 点http://www .microsoft.com/ scri pting/