问:
您好,脚本专家!如何确定在HTA中选择了哪些文本?
--DO
答:
您好,DO。您知道,大多数人认为每天编写“您好,脚本专家!”专栏是世界上最吸引人、最令人兴奋的工作之一。如果编写此专栏的脚本专家不这么懒惰的话,也许是这样。比如说,很多时候他选择自己认为可以编成脚本的问题。通常他手头没有能完成问题中提到的任务的脚本,但他知道可以编写这样一个脚本。这是行之有效的方法,但不是特别令人兴奋的方法。
不过,这个问题有点不太一样。您如何能确定在HTA中选择了哪些文本?哎呀,我们也拿不准您是否能确定在HTA中选择了哪些文本。但是,事实证明您能够确定:
<html>
<head>
<title>HTATest</title>
</head>
<SCRIPTLANGUAGE="VBScript">
SubShowSelection
SetobjSelection=Document.Selection.CreateRange()
MsgboxobjSelection.text
EndSub
</SCRIPT>
<body>
<textareaname="ScriptArea"rows=5cols=40></textarea><p>
<inputid=runbuttontype="button"value="ShowSelection"onClick="ShowSelection">
</body>
我们在这里使用的是一个小而简单的HTA,其外观如下:
什么?您怎么能没有印象呢?那么,试一试吧。在该文本区域键入一些文本,然后突出显示该文本的一部分:
现在单击标签为
Show Selection(显示选择)的按钮。非常幸运的是,您将看到一个消息框,告诉您哪些文本已被选中:
您说对了:看上去就是这个样子了。
那么,这一切都是如何做到的呢?我们首先创建一个含有一个文本区域和一个按钮的 HTA。我们不讨论创建 HTA 本身的细节,如果您需要一些背景信息,请查看
HTA Developers Center(英文)或
Scripting Week 3 webcast on HTAs(英文)
。今天我们只重点讨论您单击此按钮时运行的子例程:
SubShowSelection
SetobjSelection=Document.Selection.CreateRange()
MsgboxobjSelection.Text
EndSub
没错:只有两行代码。首先我们创建一个新的TextRange对象;这一过程可通过调用CreateRange()方法来实现,此方法恰好是Document.Selection对象的一部分:
SetobjSelection=Document.Selection.CreateRange()
事实证明,TextRange对象的属性之一就是Text属性。顾名思义,该属性返回的文本正好是在此特定TextRange中找到的文本。要返回当前在HTA中选定的文本,我们必须要做的就是显示Text属性的值:
MsgboxobjSelection.Text
顺便说一下,所选文本并不限于文本框或文本区域中的文本。选择此HTA内的任意文本,看看会发生什么:
<html>
<head>
<title>HTATest</title>
</head>
<SCRIPTLANGUAGE="VBScript">
SubShowSelection
SetobjSelection=Document.Selection.CreateRange()
MsgboxobjSelection.text
EndSub
</SCRIPT>
<body>
<p>HereissometextinanHTA.Selectanyportionofthetextandthen
clicktheShowSelectionbutton.</p>
<inputid=runbuttontype="button"value="ShowSelection"onClick="ShowSelection">
</body>
很酷吧?您知道,也许这真是世界上最吸引人、最令人兴奋的工作。
好了…。