第 十 一 章 使 用 H T M L 控 件
上 一 章 我 们 介 绍 了 怎 样 通 过 H TTP 控 件 传 输 HT M L 文 档 并 对 HT M L 文 档 作了 简 单 的 分 析 和 处 理 这 一 章 我 们 要 介 绍 C+ + Bu ild e r 3 从 N e t M a n a g e 公 司 引进 的 HT M L 控 件 用 这 个 控 件 可 以 建 立 一 个 强 大 的 HT M L 语 法 分 析 器 和 页 面显 示 器 这 样 无 需 从 外 部 启 动 一 个 现 成 的 浏 览 器 程 序 应 用 程 序 直 接 就能 浏 览 W e b 页 面 够 酷 的 吧
11 . 1 HT ML 控 件 概 述
在 HT M L 控 件 中 要 检 索 HT M L 文 档 有 四 种 方 式 一 是 用 UR L 特 性 指 定 要 检索 的 文 档 然 后 调 用 R e que s t D o c 此 时 将 触 发 O n D o R e q u e s t D o c 事 件 二 是 在W e b 页 面 中 单 击 超 级 链 接 HT M L 会 自 动 提 取 出 该 超 级 链 接 的 UR L 此 时 将触 发 O n D o R e q u e s t D o c 事 件 三 是 选 择 嵌 入 的 文 档 此 时 将 触 发O n D o R e que s t E m be dde d 事 件 四 是 在 窗 体 上 单 击 提 交 ( S ubm is s ion ) 按 钮此 时 将 触 发 O n D o R e que s t S u bm it事 件
HT M L 控 件 的 功 能 非 常 强 大 支 持 所 选 页 面 的 滚 动 视 图 支 持 G IF JP E G
BM P XB M 等 格 式 的 图 像 支 持 HT M L 2 .X 及 大 多 数 N e t S c a pe 2 .0 和 E xp lo re r
2 .0 扩 展 支 持 用 H TTP 和 文 件 UR L 检 索 文 档 允 许 修 改 显 示 风 格 包 括 字 体 和
颜 色 等 支 持 D o cS trea m 接 口 用 于 进 行 复 杂 的 传 输 用 事 件 重 载 默 认 的 处 理支 持 页 面 打 印 当 然 与 IE 或 N e ts c a p e 相 比 HT M L 控 件 还 是 有 些 欠 缺 的它 不 支 持 文 本 选 择 和 剪 贴 板 操 作 不 支 持 代 理 服 务 器 不 支 持 FT P 功 能 没有 安 全 措 施 不 支 持 多 部 分 文 档 提 交
HT M L 控 件 也 可 以 只 作 为 非 可 视 的 HT M L 语 法 分 析 器 只 要 把 V is ib le 特 性 设为 Fa ls e 在 E le m N o tific a tio n 特 性 设 为 T ru e 的 情 况 下 每 当 一 个 HT M L 元 素 要分 析 的 时 候 就 会 触 发 O n D o N e w E le m e n t事 件 在 处 理 O n D o N e wE le m e n t 事 件的 句 柄 中 把 En a b le D e fa u lt参 数 设 为 Fa ls e 这 是 为 了 不 再 对 HT M L 元 素 作 进 一步 的 处 理 ( 因 为 不 需 要 显 示 ) 这 样 就 大 大 加 快 了 分 析 的 速 度 关 于O n D o N e wE le m e n t事 件 后 面 将 详 细 介 绍
11 .2 HT ML 控 件 的 特 性
Ba c k C o lo r 特 性
声 明 prope r ty B a c k C o lo r : T C o lor;
这 个 特 性 用 于 设 置 默 认 的 背 景 颜 色 RG B 值 的 范 围 从 0 到 0 x F FFF FF 注 意如 果 U s e D o c C o lo rs 特 性 设 为 T ru e 的 话 文 档 的 背 景 颜 色 就 由 D o c B a c kC o lor特性 决 定
B a c k I m ag e 特 性
声 明 prope r ty B a c k Im a g e : W ide S tr ing;
这 个 特 性 用 于 指 定 一 个 图 像 的 UR L 该 图 像 作 为 文 档 的 背 景 图 案 注 意如 果 U s e D o c C o lo rs 特 性 设 为 T ru e 文 档 的 背 景 图 案 由 文 档 中 的 <B O D Y B A C KGR O UND = Λ > 标 记 决 定 该 图 案 将 自 动 平 铺 添 满 整 个 HT M L 控 件 的 窗口
B a s e UR L 特 性
声 明 prope r ty B a s e U R L : W ide S tr ing;
这 个 只 读 的 特 性 返 回 文 档 中 <B A S E > 标 记 的 值 如 果 文 档 中 没 有 <B A S E > 标记 此 特 性 就 返 回 UR L 特 性 的 值
B lo c k in g 特 性
声 明 prope r ty B loc k ing: W o rd B o o l;
如 果 把 这 个 特 性 设 为 T ru e ( 默 认 是 Fa ls e ) 调 用 HT M L 控 件 的 任 何 一 个 方 法 将等 到 完 全 执 行 完 毕 后 才 返 回 类 似 于 W inS oc k 编 程 中 的 阻 塞
B lo c k R e s u lt 特 性
声 明 prop e rty
B lo c k R esu lt:( icB lo ck O K ,Ic T im ed O u t,Ic E rro r E x it,Ic B lo c k C an ce l,Ic U ser Q u it);
这 个 只 读 的 特 性 返 回 上 次 阻 塞 调 用 的 返 回 值 可 以 是 下 列 值 之 一
ic B loc kO K ( 上 次 调 用 成 功 ) Ic T im e dO u t( 上 次 调 用 超 时 ) Ic E rro rE x i t( 上 次 调用 中 途 出 现 错 误 ) Ic B lo c k C an cel( 上 次 调 用 中 途 被 取 消 ) Ic U s e r Q u it( 因 为 用户 关 闭 了 程 序 )
D e fer R etriev a l 特 性
声 明 p ro p e rty D e fe rR e trie v a l: W o rd B o o l ;
如 果 此 特 性 设 为 T ru e ( 默 认 是 Fa ls e ) 除 非 显 式 地 请 求 否 则 不 下 载 文 档 中 嵌入 的 对 象
D o c B ac k C o lo r 特 性
声 明 prope r ty D o c B a c kC o lor: T C o lor;
这 个 只 读 的 特 性 返 回 文 档 中 < B ODY > 标 记 的 BG CO L O R 属 性 也 就 是 文 档 的背 景 颜 色 如 果 < B OD Y> 标 记 中 没 有 BG CO L O R 属 性 此 特 性 就 返 回B ack C o lo r特 性 的 值
D o c F or e C o lo r 特 性
声 明 prope r ty D o c F ore C o lor: T C o lor;
这 个 只 读 的 特 性 返 回 文 档 中 < B ODY > 标 记 的 TEX T 属 性 也 就 是 文 档 的 前 景( 文 本 ) 颜 色 如 果 < B ODY > 标 记 中 没 有 TEX T 属 性 此 特 性 就 返 回 Fo re C o lo r 特 性 的 值
D o c I npu t 特 性
声 明 prope r ty D o c Inpu t: D o c Inpu t;
这 个 只 读 的 特 性 返 回 一 个 D o c Inpu t对 象
D o c L in k C o lo r 特 性
声 明 prope r ty D o c L inkC o lor: T C o lor;
这 个 只 读 的 特 性 返 回 文 档 中 < B ODY > 标 记 的 L IN K 属 性 也 就 是 文 档 中 未 访问 过 的 链 接 的 颜 色 如 果 < B ODY > 标 记 中 没 有 L IN K 属 性 此 特 性 就 返 回L inkC o lo r特 性 的 值
D o c O u tpu t 特 性
声 明 prope r ty D o c O u tp u t: D o c O u tpu t;
这 个 只 读 的 特 性 返 回 一 个 D o c O u tpu t对 象
D o c V isite d C o lo r 特 性
声 明 prope r ty D o c V is i te d C o lo r : T C o lor;
这 个 只 读 的 特 性 返 回 文 档 中 < B ODY > 标 记 的 VL IN K 属 性 也 就 是 已 访 问 过的 链 接 的 颜 色 如 果 < B ODY > 标 记 中 没 有 VL IN K 属 性 此 特 性 就 返 回V is ite dC o lor特 性 的 值
E r ro r s 特 性
声 明 p ro p e rty E rro r s : ic E rro rs ;
这 个 只 读 的 特 性 返 回 最 近 一 次 发 生 的 错 误 (ic E rro rs 对 象 )
E le m N o tifica tio n 特 性
声 明 prope r ty E le m N o tif ic a t ion: W o rd B o o l;
如 果 您 需 要 把 HT M L 控 件 作 为 HT M L 语 法 分 析 器 您 应 当 把 这 个 特 性 设 为
T ru e 当 一 个 新 的 HT M L 元 素 需 要 分 析 时 就 会 触 发 O n D o N e w E le m e n t事 件
F ix e d F o n t 特 性
声 明 prope r ty F ixe d F o n t: T F on t;
这 个 特 性 用 于 设 置 等 宽 文 本 的 字 体 默 认 采 用 C ourie r N e w 字 号 为 10
Fo n t 特 性
声 明 prope r ty F on t: T F on t;
这 个 特 性 用 于 设 置 非 等 宽 文 本 的 字 体 默 认 采 用 T im e s N e w R o m a n 字号 是 12
Fo re C o lo r 特 性
声 明 prope r ty F o re C o lo r : T C o lor;
这 个 特 性 用 于 设 置 默 认 的 前 景 颜 色 RG B 值 的 范 围 从 0 到 0 x F FFF FF 注 意如 果 U s e D o c C o lo rs 特 性 设 为 T ru e 的 话 文 档 的 前 景 颜 色 就 由 D o c F ore C o lor 特性 决 定
Fo r m s 特 性
声 明 prope r ty F o rm s : H T M L F o rm s ;
这 个 只 读 的 特 性 返 回 文 档 中 的 窗 体 ( 后 面 将 介 绍 HT M L F o rm s 和 HT M L F o rm s
对 象 )
H a s S e le c tio n 特 性
声 明 prope r ty H a s S e le c tion: W o rd B o o l;
这 个 只 读 的 特 性 返 回 是 否 选 择 了 文 本
H e a d in g 1 F o n t 特 性
声 明 prope r ty H e a d ing1F on t: T F on t;
这 个 特 性 用 于 设 置 包 括 在 一 对 <H 1 > 标 记 之 间 的 文 本 ( 即 一 级 标 题 ) 的 字 体默 认 采 用 T im e s N e w R o m a n 字 号 是 24 加 粗
H e a d in g 2 F o n t 特 性
声 明 prope r ty H e a d ing2F on t: T F on t;
这 个 特 性 用 于 设 置 包 括 在 一 对 <H 2 > 标 记 之 间 的 文 本 ( 即 二 级 标 题 ) 的 字 体默 认 采 用 T im e s N e w R o m a n 字 号 是 18 加 粗
H e a d in g 3 F o n t 特 性
声 明 prope r ty H e a d ing3F on t: T F on t;
这 个 特 性 用 于 设 置 包 括 在 一 对 <H 3 > 标 记 之 间 的 文 本 ( 即 三 级 标 题 ) 的 字 体默 认 采 用 T im e s N e w R o m a n 字 号 是 14 加 粗
H e a d in g 4 F o n t 特 性
声 明 prope r ty H e a d ing4F on t: T F on t;
这 个 特 性 用 于 设 置 包 括 在 一 对 <H 4 > 标 记 之 间 的 文 本 ( 即 四 级 标 题 ) 的 字 体
默 认 采 用 T im e s N e w R o m a n 字 号 是 12 加 粗
H e a d in g 5 F o n t 特 性
声 明 prope r ty H e a d ing5F on t: T F on t;
这 个 特 性 用 于 设 置 包 括 在 一 对 <H 5 > 标 记 之 间 的 文 本 ( 即 五 级 标 题 ) 的 字 体默 认 采 用 T im e s N e w R o m a n 字 号 是 10 加 粗
H e a d in g 6 F o n t 特 性
声 明 prope r ty H e a d ing6F on t: T F on t;
这 个 特 性 用 于 设 置 包 括 在 一 对 <H 6 > 标 记 之 间 的 文 本 ( 即 六 级 标 题 ) 的 字 体默 认 采 用 T im e s N e w R o m a n 字 号 是 8 加 粗
h W n d 特 性
声 明 prope r ty hW n d : O L E _ H A N D L E ;
这 个 只 读 的 特 性 返 回 HT M L 控 件 的 窗 口 句 柄 这 样 就 可 以 传 递 W M _ C O P Y 等消 息
I s P r in tin g D on e 特 性
声 明 prope r ty Is P r in tingD one [ P a g e N um be r : In te g e r ] : W o rd B oo l;
如 果 文 档 中 指 定 的 页 码 ( P ag eN u m b e r 参 数 ) 已 经 被 打 印 这 个 只 读 的 特 性 就返 回 T ru e
L a y o u t D o n e 特 性
声 明 |
prope r ty : W o rd B oo l; |
||
---|---|---|---|
如 果 文 就 返 回 |
档 的 总 体 布 局 已 显 示 出 来 T ru e |
嵌 入 的 对 象 还 未 下 载 |
这 个 只 读 的 特 性 |
L in k C o lo r 特 性
声 明 prope r ty L inkC o lor: T C o lor;
这 个 特 性 用 于 设 置 未 访 问 过 的 链 接 颜 色 RG B 值 的 范 围 从 0 到 0 x F FFF FF
如 果 U s e D o c C o lo rs 特 性 设 为 T ru e 链 接 的 颜 色 由 D o c L inkC o lor特 性 决 定
Pa r s e D o n e 特 性
声 明 prope r ty P a rs e D one : W o rd B oo l;
开 始 检 索 文 档 的 时 候 此 特 性 为 Fa ls e 当 整 个 文 档 分 析 完 毕 后 这 个 特 性就 返 回 T ru e
R e d r a w 特 性
声 明 prope r ty R e dra w : W o rd B oo l;
如 果 这 个 特 性 设 为 T ru e 当 文 档 中 的 数 据 发 生 变 化 或 窗 口 被 翻 滚 时 就 重 画
HT M L 控 件 的 窗 口 不 过 这 可 能 造 成 屏 幕 老 是 闪 烁
R e q u e s t UR L 特 性
声 明 prope r ty R e qu e s t U R L : W ide S tr ing;
这 个 只 读 的 特 性 返 回 当 前 要 请 求 的 文 档 的 UR L 由 R e que s t D o c 的 UR L 参 数设 定
R e ta inSo u rc e 特 性
声 明 prope r ty R e ta in S o urc e : W o rd B oo l;
如 果 这 个 特 性 设 为 T ru e 将 保 存 文 档 的 源 代 码 ( 可 以 由 S o u rceT ex t特 性 访 问 )
如 果 不 需 要 文 档 的 源 代 码 最 好 把 这 个 特 性 设 为 Fa ls e 以 节 省 内 存
R e trie v e B y tes D o n e 特 性
声 明 prope r ty R e tr ie ve B y te s D one : In te ge r ;
这 个 只 读 的 特 性 返 回 已 经 检 索 到 文 档 的 多 少 个 字 节
R e tr ie ve B y te s Tota l 特 性
声 明 prope r ty R e tr ie ve B y te s T o ta l : In te ge r ;
这 个 只 读 的 特 性 返 回 要 检 索 的 文 档 总 共 有 多 少 个 字 节 如 果 D e fe rR e trie v a l
特 性 设 为 T ru e 返 回 的 值 不 包 括 文 档 中 嵌 入 的 对 象
S leep T im e 特 性
声 明 prope r ty S le e pT im e : L ong in t;
这 个 特 性 仅 用 于 阻 塞 方 式 ( 指 B loc k ing 特 性 设 为 T ru e ) 用 于 指 定 检 索 消息 的 时 间 间 隔 默 认 是 10 毫 秒
So u rc e Te x t 特 性
声 明 prope r ty S ourc e T e x t: W ide S tr ing ;
如 果 R e ta in S o u rc e 特 性 设 为 T ru e 可 以 由 S o u rceT ex t特 性 得 到 文 档 的 源 代 码
T im e O u t 特 性
声 明 prope r ty T im e ou t: In te ge r ;
这 个 特 性 用 于 指 定 一 个 时 间 间 隔 ( 以 秒 为 单 位 ) 默 认 是 30 秒 在 规 定 的 时 间间 隔 内 如 果 没 有 收 到 数 据 就 触 发 O n T im e out 事 件 ( 仅 对 主 文 档 有 效 不 适用 于 嵌 入 的 文 档 )
To ta lH e ig h t To ta lW id th 特 性
声 明 prope r ty T o ta l H e igh t, T o ta l W id th : In te g e r ;
这 两 个 只 读 的 特 性 分 别 返 回 文 档 的 高 度 和 宽 度 ( 以 像 素 为 单 位 ) 包 括 因 为 窗口 太 小 未 显 示 出 来 的 部 分 注 意 在 对 文 档 的 分 析 和 布 局 函 数 中 这 两 个特 性 的 值 实 际 上 是 变 化 的 当 文 档 分 析 完 毕 后 ( 此 时 将 触 发 O n E n d R e tr iev al事件 ) 这 两 个 特 性 的 值 才 固 定 下 来
U nde r lin e L ink s 特 性
声 明 prope r ty U nde r l in e L in k s : W o rd B o o l;
如 果 这 个 特 性 设 为 T ru e 文 档 中 的 链 接 加 上 下 划 线
URL 特 性
声 明 prope r ty U R L : W id e S tr ing ;
当 调 用 R e que s t D o c 并 且 传 递 了 合 法 的 UR L 时 就 开 始 检 索 文 档 此 时 将 触发 O n B e g in R etriev al事 件 这 时 候 UR L 特 性 就 返 回 正 在 检 索 的 文 档 的 UR L 加上 端 口 号 可 见 UR L 特 性 与 R e que s t U R L 特 性 还 是 有 区 别 的
U s e D o c C o lo r s 特 性
声 明 prope r ty U s e D oc C o lo rs : W o rd B oo l;
如 果 这 个 特 性 设 为 T ru e 就 用 文 档 本 身 的 前 景 背 景 链 接 的 颜 色 取 代
B ack C o lo r Fo re C o lo r L inkC o lor特 性 设 置 的 颜 色
V ie w So u rc e 特 性
声 明 prope r ty V ie w S ourc e : W o rd B oo l;
如 果 这 个 特 性 设 为 T ru e HT M L 控 件 将 以 源 代 码 的 形 式 显 示 文 档 如 果
R e ta in S o u rc e 特 性 设 为 Fa ls e HT M L 控 件 会 自 动 去 检 索 文 档 的 源 代 码
V is ite dC o lo r 特 性
声 明 prope r ty V is ite dC o lor: T C o lor;
这 个 特 性 用 于 设 置 访 问 过 的 链 接 的 颜 色 RG B 值 的 范 围 从 0 到 0 x F FFF FF 如 果 U s e D o c C o lo rs 特 性 设 为 T ru e 访 问 过 的 链 接 的 颜 色 由 D o c V is ite d C o lo r 特性 决 定
最 后 简 单 介 绍 一 下 HT M L 控 件 的 特 性 页 如 图 11 .1 所 示
图 11 . 1 H T M L 控 件 的 特 性 页
11 .3 HT ML 控 件 的 方 法
A b ou t B o x 函 数
声 明 proc e dure A bou t B ox;
这 个 函 数 用 于 显 示 HT M L 控 件 的 A bou t框 如 图 11 .2 所 示
图 11 . 2 H T M L 控 件 的 A bout 框
Au to P r in t 函 数
声 明 proc e dure A u to P r in t( hD C : In te ge r ) ;
这 个 函 数 用 于 打 印 整 个 文 档 并 自 动 插 入 分 页 符 其 中 hD C 参 数 用 于 指 定打 印 机 的 设 备 描 述 表 程 序 示 例 如 下
P r in te r( )-> B e g in D o c ( );
H T M L 1 -> A u to P r in t(P rin te r ( )-> h D C ); P r in te r ( ) -> E ndD oc ;
B e g inP r in tin g 函 数
声 明 proc e dure B e g inP r in ting( hD C : In te ge r ; X , Y , W id th, H e igh t, D e fa u l t H ead ers , D e fa u lt T itle: O leV aria n t) ;
这 个 函 数 用 于 在 打 印 前 进 行 设 置 其 中 hD C 参 数 是 打 印 机 的 设 备 描 述 表
X 和 Y 参 数 用 于 设 置 要 打 印 的 区 域 的 起 点 坐 标 W id th 和 H e igh t参 数 用 于 要 打印 的 区 域 的 宽 度 和 高 度 D e fa u l t H ead er和 D e fa u ltT itle 参 数 目 前 暂 时 不 用 程
序 示 例 如 下
v o id _ fa s tc a ll T F o rm 1 ::B u tto n 1 C lic k ( T O b je c t * S e n d e r )
{
b o o l D o n e P rin tin g ;
P rin te r ( ) -> B e g in D o c ( ) ;
H T M L 1 -> B e g in P rin tin g ( P r in te r ( ) -> h D C ) ; // 其余参数 省略
in t P a g e = 1 ;
w h ile ( D o n e P r in tin g = F a lse )
{
H T M L 1 -> P rin t P a g e (P rin te r ( ) -> h D C , P a g e ); Pa g e = Pa g e +1
D o n e P r in t ing = H T M L 1-> Is P r in tin g D on e ( P a g e ) ; P r in te r ( )-> N e w P a g e ( );
}
H T M L 1-> E ndP r in t ing( ); P rin te r ( ) -> E n d D o c ( ) ;
};
C a n ce l 函 数
声 明 proc e dure C a nc e l( M e s s a ge : O le V a r ia n t) ;
这 个 函 数 用 于 取 消 当 前 的 文 档 检 索 ( 包 括 嵌 入 的 文 档 ) 然 后 输 出 一 个 消 息
E ndP r in tin g 函 数
声 明 proc e dure E ndP r in ting;
这 个 函 数 用 于 结 束 对 打 印 的 设 置 下 一 步 应 当 调 用 P rin te r 对 象 的 E ndD oc 函数 开 始 打 印 文 档 程 序 示 例 请 参 见 B e g in P r in tin g 函 数
G e t P la in Te x t 函 数
声 明 func t ion G e t P la in T e x t( S e le c te d, F a n c y : W o rd B o o l) : W ide S tr ing ;
这 个 函 数 用 于 返 回 文 档 中 当 前 选 择 的 文 本 如 果 Se le c te d 参 数 设 为 T ru e 这个 函 数 就 只 返 回 当 前 选 择 的 文 本 如 果 Se le c te d 参 数 设 为 Fa ls e 这 个 函 数 就返 回 整 个 文 本 如 果 Fa n c y 参 数 设 为 T ru e 文 档 中 的 水 平 线 被 转 换 为 文 本 形式 的 点 划 线
P r in t P ag e 函 数
声 明 proc e dure P r in t P a g e ( hD C , P a ge N u m b e r : In te ge r ) ;
这 个 函 数 用 于 打 印 文 档 中 指 定 的 页 hD C 参 数 是 打 印 机 的 设 备 描 述 表
Pa g e N u m b e r参 数 指 定 要 打 印 的 页 码
R e que s t A llE m b e d de d 函 数
声 明 proc e dure R e que s t A ll E m b e dde d;
这 个 函 数 请 求 下 载 所 有 嵌 入 的 文 档 如 调 用 成 功 将 触 发
O n D o R e que s t E m be dde d 事 件
R e q u e s t D o c 函 数
声 明 proc e dure R e que s t D o c ( c ons t U R L : W ide S tr ing);
这 个 函 数 很 重 要 用 于 检 索 UR L 参 数 指 定 的 文 档 并 触 发 O n D o R e q u e s t D o c 事 件 同 时 R e que s t U R L 特 性 被 设 为 UR L 参 数 的 值 如 果 UR L 参 数 指 定 的路 径 是 有 效 的 就 开 始 检 索 文 档 并 触 发 O n B e g in R etriev a l事 件 此 时 UR L 特 性 就 被 设 为 UR L 参 数 的 值
Se le c t A ll 函 数
声 明 proc e dure S e le c t A ll ;
调 用 这 个 函 数 将 选 择 HT M L 控 件 的 窗 口 中 所 有 的 文 本
11 .4 HT ML 控 件 的 事 件
目 前 为 止 本 书 介 绍 的 In te rn e t A c tiv e X 控 件 中 只 有 HT M L 控 件 是 可 视 的 也就 是 说 在 运 行 期 是 可 以 看 见 的 其 它 均 是 非 可 视 的 因 此 HT M L 控 件 具有 诸 如 O n C lic k O n K e y D o w n O n M ous e D ow n 等 事 件 用 于 处 理 用 户 在 窗口 上 的 操 作
O n B e g in R e triev a l 事 件
声 明 prope r ty O n B e g inR e tr ie v a l: T N o tif y E ve n t ;
当 开 始 检 索 HT M L 文 档 时 就 触 发 这 个 事 件 如 果 用 一 个 进 程 条 ( T P ro g res s B ar
元 件 ) 来 显 示 下 载 进 度 的 话 此 时 正 好 初 始 化 这 个 进 程 条
O n C lic k 事 件
声 明 prope r ty O n C lic k: T N o tif y E ve n t;
当 用 户 在 窗 口 上 单 击 鼠 标 左 键 时 就 触 发 这 个 事 件
O n D b lC lic k 事 件
声 明 prope r ty O n D b l C l ic k : T N o tif y E ve n t;
当 用 户 在 窗 口 上 双 击 鼠 标 时 将 触 发 这 个 事 件
O n D o c I npu t 事 件
声 明 prope r ty O n D o c Inpu t: proc e dure ( S e nde r : T O b je c t ; c ons t D o c Inpu t: D o c Inpu t) ;
当 D o c Inpu t对 象 的 状 态 发 生 变 化 或 新 的 数 据 块 被 传 输 时 就 触 发 这 个 事 件 在
处 理 这 个 事 件 的 句 柄 中 可 以 由 D o c Inpu t参 数 返 回 D o c Input对 象 进 而 访 问
D o c Inpu t对 象 的 特 性 和 方 法
O n D o c O u tpu t 事 件
声 明 prope r ty O n D o c O u tpu t: proc e d u re ( S e nde r : T O b je c t ; c ons t D o c O u tpu t: D o c Inpu t) ;
当 D o c O u tput对 象 的 状 态 发 生 变 化 或 新 的 数 据 块 被 传 输 时 就 触 发 这 个 事 件
在 处 理 这 个 事 件 的 句 柄 中 可 以 由 D o c O u tput 参 数 返 回 D o c O u tput 对 象 进
而 访 问 D o c O u tpu t对 象 的 特 性 和 方 法
O n D o N e w E le m e n t 事 件
声 明 prope r ty O n D o N e w E le m e n t: proc e dure ( S e nd e r : T O b je c t ; c ons t E le m T y p e : W ide S tr ing ; E ndT a g : W ordB oo l; c o n s t A t trs : H T M L A ttrs ; c ons t te x t: W id e S tr ing; va r E n a b le D e fa u lt : W o rd B oo l) ;
当 一 个 新 的 HT M L 元 素 将 要 分 析 时 就 触 发 O n D o N e w E le m e n t事 件 如 果 要 分
析 的 HT M L 元 素 是 文 档 中 的 文 本 E le m T y p e 参 数 为 空 而 Te x t参 数 就 是 该 文本 如 果 是 标 记 E le m T y p e 参 数 就 是 标 记 类 型 此 时 可 以 通 过 A ttrs 参 数 ( H TM LA ttrs 对 象 ) 得 到 标 记 中 的 属 性 而 Te x t参 数 则 为 空 如 果 有 一 个 结 束标 记 的 话 E ndT a g 参 数 就 为 T ru e 否 则 就 为 Fa ls e
En a b le D e fa u lt参 数 很 重 要 如 果 HT M L 控 件 只 是 作 为 非 可 视 的 语 法 分 析 器您 应 当 把 这 个 参 数 设 为 Fa ls e 这 样 就 不 再 对 该 元 素 作 进 一 步 的 处 理
O n D o R e q u e s t D o c 事 件
声 明 prope r ty O n D o R e que s t D o c : proc e dure ( S e nde r : T O b je c t ; c ons t U R L : W ide S tr ing ; c ons t E le m e n t: H T M L E le m e n t ; c ons t D o c Inpu t: D o c Inpu t; va r E n a b le D e fa u lt: W o rd B o o l) ;
当 调 用 了 R e que s t D o c ( 不 管 UR L 参 数 是 否 有 效 ) 或 者 在 窗 口 中 单 击 某 个 链 接 时
将 触 发 这 个 事 件 此 时 R e que s t U R L 参 数 自 动 设 为 UR L 参 数 是 值 或 链 接 的UR L 如 果 要 检 索 的 UR L 是 有 效 的 就 开 始 检 索 并 触 发 O n B e g in R etriev a l 事件 UR L 特 性 设 为 正 在 检 索 的 UR L
在 O n D o R e q u e s t D o c 事 件 中 UR L 参 数 是 要 检 索 的 UR L E le m e n t参 数 目 前 暂时 不 用 D o c Input参 数 返 回 一 个 D o c Input对 象 En a b le D e fa u l t参 数 的 含 义 见O n D o N e wE le m e n t事 件
O n D o R e que s t E m be d d e d 事 件
声 明 prope r ty O n D o R e que s t E m be dd e d : p roc e dure ( S e nde r : T O b je c t; c ons t U R L : W ide S tr ing ; c ons t E le m e n t: H T M L E le m e n t ; c ons t D o c Inpu t: D o c Inpu t; va r E n a b le D e fa u lt: W o rd B o o l) ;
如 果 D e fe rR e trie v a l特 性 设 为 Fa ls e 检 索 文 档 时 要 自 动 检 索 其 中 嵌 入 的 文 档
如 果 D e fe rR e trie v a l特 性 设 为 T ru e 只 有 调 用 了 R e que s t A l l E m b e dde d 函 数 才 检索 嵌 入 的 文 档 此 事 件 就 是 在 检 索 嵌 入 的 文 档 时 触 发 的 其 中 UR L 参 数是 嵌 入 文 档 的 UR L E le m e n t参 数 目 前 不 用 D o c Inpu t参 数 返 回 一 个 D o c Input 对 象 En a b le D e fa u lt参 数 的 含 义 见 上
O n D o R e q u e s t Sub m it 事 件
声 明 prope r ty O n D o R e que s t S u b m it : proc e dure ( S e nd e r : T O b je c t ; c ons t U R L : W ide S tr ing ; c ons t F o rm : H T M L F o rm ; c ons t D o c O u tpu t: D o c O u tpu t; v a r E n a b le D e fa u lt: W o rd B o o l) ;
当 用 户 单 击 了 窗 体 上 的 S ubm it( 提 交 ) 按 钮 或 程 序 中 调 用 了 R e que s t S u b m i t
时 就 会 触 发 这 个 事 件 对 于 目 前 这 个 版 本 的 HT M L 控 件 来 说 窗 体 上 的 内 容是 由 用 UR L 编 码 的 字 段 的 值 组 成 的 这 些 值 可 以 由 HT M L F o rm 对 象 的U R L E n c ode dB od y 特 性 访 问 ( 后 面 将 介 绍 HT M L F o rm 对 象 ) 如 果 窗 体 的 提 交
方 法 是 GE T 而 不 是 PO ST 的 话 这 个 事 件 的 UR L 参 数 就 是 用 户 请 求 的 动 作
Fo rm 参 数 返 回 一 个 HT M L F o rm 对 象 就 是 正 在 提 交 的 窗 体 D o c O u tput参 数返 回 一 个 D o c O u tput对 象 如 果 要 取 消 此 次 提 交 就 把 En a b le D e fa u lt 参 数 设为 Fa ls e 如 果 把 En a b le D e fa u lt参 数 设 为 T ru e R e q u e s t U RL 特 性 将 被 设 为 UR L 参 数 的 值 如 果 UR L 是 有 效 的 话 UR L 特 性 就 被 设 为 UR L 参 数 的 值
O n E n d R etriev a l 事 件
声 明 prope r ty O n E ndR e tr ie v a l : T N o tif y E ve n t;
文 档 检 索 完 毕 就 触 发 这 个 事 件 如 果 用 一 个 进 程 条 显 示 下 载 进 度 的 话 此时 就 是 100%
O n E r ro r 事 件
声 明 property O n E rro r:procedure( S ender:T O b ject;N u m ber:S m a llin t;v ar D escrip tion :W ide S tr-in g;
S co d e:In teg er;co n st S o u rce,H elp F ile :W id e S trin g ;H e lp C o n tex t:In teg e r;v ar C an celD isp la y:W o rd Bo o l);
当 在 连 接 或 传 输 数 据 的 时 候 出 错 时 就 触 发 这 个 事 件 其 中 N u m b e r 参 数 是
错 误 代 码 D e s c r ip t io n 参 数 是 关 于 错 误 的 简 短 描 述 S c ode 参 数 和 S ourc e 参数 的 作 用 不 详 H e lp F ile 参 数 是 帮 助 文 件 名 H e lp C o n te x t是 帮 助 的 上 下 文 编号 如 果 您 把 C a n c e l D is p la y 参 数 设 为 T ru e ( 默 认 ) 表 示 不 显 示 错 误 信 息 框
O n G o t F o c u s 事 件
声 明 prope r ty O n G o t F oc us : T N o tify E ve n t;
当 HT M L 控 件 的 窗 口 获 得 输 入 焦 点 时 就 触 发 这 个 事 件 可 能 是 因 为 用 户 直 接用 鼠 标 单 击 窗 口 或 者 用 TA B 键 把 输 入 焦 点 切 换 到 窗 口 中 也 可 能 是 因 为程 序 中 调 用 了 S e t F oc us
O n K e y D o w n 事 件
声 明 prope r ty O n K e y D ow n: proc e dure ( S e nde r : T O b je c t ; va r K e y : W o rd ; S h if t : T s h ift-S ta te );
如 果 输 入 焦 点 在 HT M L 控 件 的 窗 口 中 当 用 户 在 窗 口 中 按 下 一 个 键 就 触 发 这
个 事 件 其 中 K e y C ode 参 数 是 所 按 键 的 虚 拟 码 Sh if t参 数 是 一 个 集 合 可包 括 下 列 元 素 ssS h if t ssA lt ssC tr l ssL e f t ssR ig h t ssM id d le s s D oub le
O n K e y P re s s 事 件
声 明 P rope r ty O n K e y P re s s : P roc e dure ( S e nde r : T O b je c t; va r K e y : C h a r ) ;
这 个 事 件 发 生 在 用 户 按 下 了 某 个 字 符 键 其 中 K e y 参 数 表 示 被 按 下 的 字 符
O n K e y U p 事 件
声 明 P rope r ty O n K e y U p : proc e dure ( S e nde r : T O b je c t ; va r K e y : W o rd ; S h if t : T S h if t S tate);
这 个 事 件 发 生 在 用 户 释 放 了 键 参 数 含 义 见 O n K e y D o w n 事 件
O n L a y o u t C o m p le te 事 件
声 明 prope r ty O n L a y ou tC o m p le te : T N o tif y E ve n t;
当 HT M L 主 文 档 的 布 局 已 完 成 时 将 触 发 这 个 事 件 不 过 此 时 嵌 入 的 文 档 可能 还 没 有 检 索 完 毕 但 至 少 每 个 嵌 入 文 档 的 长 度 和 位 置 已 确 定
O n L o s t F o c u s 事 件
声 明 prope r ty O n L o s t F o c u s : T N o tify E ve n t;
当 HT M L 控 件 的 窗 口 失 去 输 入 焦 点 时 就 触 发 这 个 事 件 可 能 是 因 为 用 户 在 其它 窗 口 中 单 击 鼠 标 或 者 用 TA B 键 把 输 入 焦 点 切 换 到 其 它 窗 口 中 也 可 能是 因 为 调 用 了 S e t F oc us
O n M o u s e D o w n 事 件
声 明 P rope r ty O n M ous e D o w n : T M ous e E ve n t;
其 中 T M ous e E ve n t是 这 样 声 明 的
T M ous e E v e nt = P roc e dure ( S e nde r : T O bje c t ; B u t ton: T M ous e B utton; S h ift: T S hiftS ta te ; X Y: In te g e r ) o f ob je c t ;
这 个 事 件 发 生 在 用 户 在 HT M L 控 件 的 窗 口 上 按 下 了 鼠 标 其 中 B u tto n 参 数 表
示 鼠 标 上 哪 个 按 钮 被 按 下 其 值 可 能 是 m b L e f t m b R ight或 m b M idd le Sh if t
参 数 表 示 是 否 有 Sh if t C tr l和 A lt键 被 按 下 其 值 可 能 是 ssS h if t ssA lt ssC tr l ssL e f t ssR ig h t ssM id d le s s D oub le
O n M o u s e M ov e 事 件
声 明 P rope r ty O n M ous e M ove : T M ous e M ove E v e n t;
其 中 T M ous e M ove E v e n t是 这 样 声 明 的
T M ous e M ove E v e n t = P ro c e dure ( S e nde r : T O b je c t; S h if t: T S h if t S ta te ; X Y: In te g e r) o f o b je c t;
这 个 事 件 发 生 在 用 户 在 HT M L 控 件 的 窗 口 上 移 动 鼠 标 的 时 候 Sh if t参 数 的 含
义 见 上
O n M o u s e U p 事 件
声 明 P rope r ty O n M ous e U p : T M ous e E ve n t;
其 中 T M ous e E ve n t是 这 样 声 明 的
T M ous e E v e nt = P roc e dure ( S e nde r : T O bje c t ; B u t ton: T M ous e B utton; S h ift: T S hiftS ta te ; X Y: In te g e r ) o f ob je c t ;
当用户在 HT M L 控件的窗口 上释放鼠标时将触发这 个事件
O n P a rs e C o m p lete 事 件
声 明 prope r ty O n P a rs e C om p le te : T N o tif y E ve n t ;
当 整 个 HT M L 文 档 已 分 析 完 毕 时 将 触 发 这 个 事 件 此 时 文 档 的 布 局 可 能 还没 有 完 成 嵌 入 的 文 档 可 能 还 没 有 检 索 完 毕
O n T im e O u t 事 件
声 明 property O n T im e O u t:p ro cedure (S ender:T O b jec t;even t:S m a llin t;v a r
C on tinue:W ordB oo l);
当 某 个 事 件 在 规 定 的 时 间 内 未 被 处 理 就 会 触 发 这 个 事 件 其 中 Ev e n t参 数就 是 未 被 处 理 的 事 件 可 以 是 以 下 值 之 一 prc C onne c t T im e ou t
p rcR e ceiv e T im e o u t prc U s e r T im e out 您 如 果 把 C on tinue 参 数 设 为 T ru e 定时 器 继 续 处 于 活 动 状 态
O n U p d a te R e trie v a l 事 件
声 明 prope r ty O n U pda te R e tr ie va l : T N o tif y E ve n t ;
这 个 事 件 类 似 于 O n D o c O u tpu t事 件 在 检 索 文 档 的 函 数 中 将 触 发 这 个 事 件
11 .5 几 个 与 HT ML 控 件 有 关 的 对 象
在 介 绍 O n D o N e wE le m e n t事 件 时 曾 经 提 到 HT M L A ttrs 对 象 此 对 象 用 于 收 集和 管 理 HT M L 标 记 的 属 性 其 C ount特 性 返 回 标 记 中 有 几 个 属 性 其 Ite m 函数 用 于 返 回 其 中 一 个 属 性 ( H TM LA ttr 对 象 ) HT M L A ttr 对 象 的 N a me 特 性 返回 属 性 名 V a lu e 特 性 返 回 属 性 的 值
前 面 在 介 绍 O n D o R e que s t S u bm it 事 件 时 曾 经 提 到 HT M L F o rm 对 象 它 是 由HT M L F o rm s 对 象 收 集 和 管 理 的 与 HT M L A ttrs 对 象 一 样 HT M L F o rm s 对 象的 C ount特 性 返 回 共 有 几 个 窗 体 其 中 每 个 窗 体 可 以 由 Ite m 函 数 返 回 下 面我 们 重 点 介 绍 HT M L F o rm 对 象
M e th o d 特 性
声 明 prope r ty M e th od: W ide S tr ing;
这 个 只 读 的 特 性 表 示 用 户 提 交 窗 体 的 方 法 是 GE T 还 是 PO ST
URL 特 性
声 明 prope r ty U R L : W id e S tr ing ;
如 果 用 户 提 交 窗 体 的 方 法 是 GE T 这 个 只 读 的 特 性 返 回 用 户 请 求 的 动作
U R L E n c o de dB o d y 特 性
声 明 prope r ty U R L E nc ode dB od y : W id e S tr ing;
通 过 这 个 只 读 的 特 性 可 以 访 问 窗 体 中 每 个 字 段 的 值
R e que s t Su b m it 函 数
声 明 proc e dure R e que s t S ubm it ;
这 个 函 数 用 于 请 求 提 交 一 个 窗 体 并 触 发 O n D o R e que s t S ubm i t事 件