嗨,Scripting Guy!

嗨,Scripting Guy!

歡迎蒞臨 TechNet 專欄,Microsoft Scripting Guys 會在此為您解答有關系統管理指令碼的常見問題。您有關於系統管理指令碼方面的問題嗎?請將電子郵件傳送到 scripter@microsoft.com。我們無法保證能夠逐一回答每個問題,不過我們會盡力而為。

還有,別忘了瞧瞧全新經過改良的嗨,Scripting Guy!過往文件

今天的問題:如何清除 HTA 視窗?


如何清除 HTA 視窗?

嗨,Scripting Guy!如何清除 HTA 視窗?

-- DF

嗨,DF!如果您曾看過咱們 Scripting Guys 的家,您就不會向我們請教清窗之道,顯然我們有些人根本沒有頭緒 (這裡要解釋一下,如果窗戶擦得太乾淨反而會誤導小鳥一頭撞來)。所以可想見我們為何不常吸地毯,實在是為了愛護鳥類。

其實我們想要用兩個指令碼答覆您的問題:一個用來清除整個視窗,另一個專門用來清除視窗的一部份。為什麼要這麼做?嗯,待會在告訴您,不然就不好玩了。

我們先從一個簡單的 HTA 著手,上面有一個按鈕,按一下就會清除整個 HTA 視窗。

<html>
<head>
<title>HTA Test</title>
<HTA:APPLICATION 
     ID="objTest" 
     APPLICATIONNAME="Clear Window"
     SCROLL="yes"
     SINGLEINSTANCE="yes"
>
</head>
<SCRIPT LANGUAGE="VBScript">
    Sub ClearWindow
        document.body.InnerHTML = ""
    End Sub  
</SCRIPT>
<body>
    <input id=runbutton type="button" value="Clear" onClick="ClearWindow">
</body>

沒錯,這裡要做的事情很少,我們先使用下面這行程式碼指定視窗標題:

<title>HTA Test</title>

然後使用一些選用的程式碼,替 HTA 設定一些屬性,這部分今天不加詳述,如果您想要更多資訊,請看看 HTA Developers Center (英文) 或看看 Scripting Week 3 網路廣播 Going Beyond the Command Line with HTML Applications (英文)。

這表示 HTA 裡就只有一個標示為 Clear 的按鈕:

<input id=runbutton  type="button" value="Clear" onClick="ClearWindow">

按一下按鈕,就會帶出一個叫做 ClearWindow 的副程式。

這個副程式裡有什麼名堂?其實沒什麼,我們不過是把 document.body 物件的 InnerHTML 屬性設為空字串 (""):

document.body.InnerHTML = ""

這樣就會清除 HTA 視窗了。所以說如果要清除 HTA 視窗,只要把 document.body.InnerHTML 設定為空字串就得了。

等等,還沒完呢!我們要強調整個 HTA 視窗都「清潔溜溜」。例如,按下按鈕前 HTA 是這樣的:

 

HTA


按下按鈕後,HTA 變成這樣:

 

HTA


視窗已經確實清除完畢了,清潔溜溜,連 Clear 按鈕都不見了。有時候您的確是希望連使用者介面元件都不見,但是有時候您希望只清除掉某些項目,例如清掉從前一個指令碼擷取來的資料,而其他項目 (例如按鈕) 要繼續留著。這裡給您介紹改寫過的指令碼,只刪除 HTA 視窗的一部份:

 

附註:當然您可以按 F5 還原使用者介面,順便重新整理 HTA 視窗。


下列為改寫的程式碼:

<html>
<head>
<title>HTA Test</title>
<HTA:APPLICATION 
     ID="objTest" 
     APPLICATIONNAME="Clear Window"
     SCROLL="yes"
     SINGLEINSTANCE="yes"
>
</head>

<SCRIPT LANGUAGE="VBScript"> Sub ClearWindow DataArea.InnerHTML = "" End Sub
</SCRIPT>

<body> <input id=runbutton type="button" value="Clear" onClick="ClearWindow"> <p> <span id=DataArea>This is the data area.</span> </body>

這裡我們完成兩大工作:第一,新增一個 <span> 標記,並給予它一個識別碼叫做 DataArea。所謂 Span 是 HTA 的名稱範圍,可供動態修改,例如我們可以使用指令碼在 Span 裡新增文字 (和 HTML 格式)。

也可以清除 Span 裡頭所有的文字和 HTML 格式,這正是我們對 HTA 所做的第二個修改:改寫 ClearWindow 副程式好讓它只清除 DataArea Span,而不是清掉視窗上所有的東西。

Sub ClearWindow
    DataArea.InnerHTML = ""
End Sub

為什麼要這麼做呢?這是改寫過的 HTA 初次載入的樣子:

 

HTA


這個 Span (在按鈕正下方) 上頭寫著字 This is the data area

按下按鈕後 HTA 就變成這樣:

 

HTA


現在您懂了吧?我們清掉了 DataArea,但是視窗沒變,使用者介面 (本例中為 Clear 按鈕) 安然無恙,而且還可以使用。

而且再也沒有鳥會在 HTA 上面一頭撞死了,多一事不如少一事。


如需詳細資訊

查看嗨,Scripting Guy!- 過往文件

 

回到頁首 回到頁首