問: 您好,腳本專家!如何確定在 HTA 中選擇了哪些文本? -- DO 答: 您好,DO。您知道,大多數人認為每天編寫“您好,腳本專家!”專欄是世界上最吸引人、最令人興奮的工作之一。如果編寫此專欄的腳本專家不這么懶惰的話,也許是這樣。比如說,很多時候他選擇自己認為可以編成腳本的問題。通常他手頭沒有能完成問題中提到的任務的腳本,但他知道可以編寫這樣一個腳本。這是行之有效的方法,但不是特別令人興奮的方法。 不過,這個問題有點不太一樣。您如何能確定在 HTA 中選擇了哪些文本?哎呀,我們也拿不準您是否能確定在 HTA 中選擇了哪些文本。但是,事實證明您能夠確定: html> head> title>HTA Test/title> /head> SCRIPT LANGUAGE="VBScript"> Sub ShowSelection Set objSelection = Document.Selection.CreateRange() Msgbox objSelection.text End Sub /SCRIPT> body> textarea name="ScriptArea" rows=5 cols=40>/textarea>p> input id=runbutton type="button" value="Show Selection" onClick="ShowSelection"> /body> 我們在這里使用的是一個小而簡單的 HTA,其外觀如下:
什么?您怎么能沒有印象呢?那么,試一試吧。在該文本區域鍵入一些文本,然后突出顯示該文本的一部分:
現在單擊標簽為 Show Selection(顯示選擇)的按鈕。非常幸運的是,您將看到一個消息框,告訴您哪些文本已被選中:
您說對了:看上去就是這個樣子了。
那么,這一切都是如何做到的呢?我們首先創建一個含有一個文本區域和一個按鈕的 HTA。我們不討論創建 HTA 本身的細節,如果您需要一些背景信息,請查看 HTA Developers Center(英文)或 Scripting Week 3 webcast on HTAs(英文)。今天我們只重點討論您單擊此按鈕時運行的子例程: Sub ShowSelection Set objSelection = Document.Selection.CreateRange() Msgbox objSelection.Text End Sub 沒錯:只有兩行代碼。首先我們創建一個新的 TextRange 對象;這一過程可通過調用 CreateRange() 方法來實現,此方法恰好是 Document.Selection 對象的一部分: Set objSelection = Document.Selection.CreateRange() 事實證明,TextRange 對象的屬性之一就是 Text 屬性。顧名思義,該屬性返回的文本正好是在此特定 TextRange 中找到的文本。要返回當前在 HTA 中選定的文本,我們必須要做的就是顯示 Text 屬性的值: Msgbox objSelection.Text 順便說一下,所選文本并不限于文本框或文本區域中的文本。選擇此 HTA 內的任意文本,看看會發生什么: html> head> title>HTA Test/title> /head> SCRIPT LANGUAGE="VBScript"> Sub ShowSelection Set objSelection = Document.Selection.CreateRange() Msgbox objSelection.text End Sub /SCRIPT> body> p> Here is some text in an HTA. Select any portion of the text and then click the Show Selection button./p> input id=runbutton type="button" value="Show Selection" onClick="ShowSelection"> /body> 很酷吧?您知道,也許這真是世界上最吸引人、最令人興奮的工作。 好了…。