首页 > 编程 > VBScript > 正文

在 HTA 中暂停脚本的方法

2019-10-26 17:59:04
字体:
来源:转载
供稿:网友
问:
您好,脚本专家!如何在 HTA 中暂停脚本?
-- TJ
答:
您好,TJ。您知道,从古至今,人们已经花费了巨大的时间和精力来探索生命的意义。脚本专家却从未参与其中。为什么?好吧,先不说懒,我们知道那无关紧要:就算您的确找到了生命的意义,也没人在乎它。没人想知道我们存在的理由;相反,他们 - 同您一样 - 只想知道到底如何才能暂停一个嵌入在 HTML 应用程序 (HTA) 中的脚本。那才是脚本专家为之献身的事业。 
现在,如果您不熟悉 HTA,您首先想到的可能是“使用 Wscript.Sleep 即可”。(顺便说一句,如果您不熟悉 HTA,可以浏览 HTA Developers Center(英文)。)这是个好主意,但却无法实现。为什么?因为 Wscript 对象是个稍微有些独特的对象;原因之一是您实际上并不能创建此对象的实例。而只要您运行在 Windows Script Host 之下,Wscript 即会自动为您提供。问题就在这里:当您在 HTA 内部运行代码时,您并没有运行在 Windows Script Host 之下。您其实是运行在 Internet Explorer 所提供的脚本宿主之下。因为您没有运行在 Windows Script Host 之下,因此您无法自动访问 Wscript 对象,而且因为您无法创建自己的 Wscript 对象,也就无法访问 Wscript.Sleep。用高科技术语来讲,就是“瘫痪”了。
如果 Internet Explorer 提供类似于 Wscript.Sleep 的方法,则这也不是什么大不了的问题;很不幸,它没有提供。那么是否有某种神奇的解决方法,我们可以使用它来代替 Sleep 方法呢?这有必要问吗?

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

我们的 HTA 非常简单:它只由一个按钮组成,单击时会运行名为 Test 的子例程。很了不起,对不对?好吧,我们先看看 HTA 的 <SCRIPT> 部分,然后再确定它是不是真的很了不起。
我们在 <SCRIPT> 部分所做的第一件事就是声明一个名为 dtmStartTime 的全局变量:
Dim dtmStartTime
这其实对于暂停脚本没有任何作用;我们只是利用此变量帮助我们查看脚本是否的确象所期待的那样暂停。如果您现在还没有明白其含义,别急:很快就会清楚。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选