以下僅供參考?。。。。。。。。。。。。?!
2.1.1 VBScript及其主要功能
VBScript是Visual Basic程序設(shè)計(jì)語言家族中的新成員,它以Visual Basic語言為基礎(chǔ)提供了編程的功能,在腳本開發(fā)的場合中,VBScript得到了廣泛的應(yīng)用,其中包括在Internet Explorer瀏覽器上編寫客戶端腳本,也包括在Internet Information Server上編寫服務(wù)器端腳本。
在最初的設(shè)計(jì)中,VBScript是通過編寫事件驅(qū)動(dòng)的腳本來擴(kuò)大客戶端HTML功能,編寫客戶端腳本最大的優(yōu)點(diǎn)就在于由瀏覽器解釋執(zhí)行,不需要增大服務(wù)器的負(fù)擔(dān)。例如,我們可以在客戶端進(jìn)行輸入數(shù)據(jù)有效性驗(yàn)證,防止瀏覽器將無效數(shù)據(jù)發(fā)送給服務(wù)器。這樣,一方面可以減輕服務(wù)器的負(fù)擔(dān),防止服務(wù)器陷入處理大量無意義數(shù)據(jù)的工作中,同樣,也可以減輕網(wǎng)絡(luò)的阻塞;另外一方面,也能夠使客戶減少等待時(shí)間,在驗(yàn)證的時(shí)候,瀏覽器能夠立即作出響應(yīng),而如果在服務(wù)器上進(jìn)行驗(yàn)證,那用戶則不得不在瀏覽器前等待,服務(wù)器的處理和網(wǎng)絡(luò)的傳輸都需要耗費(fèi)一定的時(shí)間。
隨著IIS 3.0和ASP技術(shù)的出現(xiàn),VBScript將它的功能擴(kuò)展到服務(wù)器上,VBScript開發(fā)的腳本可以在服務(wù)器上解釋執(zhí)行。在服務(wù)器端腳本開發(fā)的過程中,使用VBScript則沒有客戶端腳本開發(fā)時(shí)的局限性,當(dāng)客戶請求頁面時(shí),頁面將在服務(wù)器上執(zhí)行,然后再反饋給瀏覽器,瀏覽器所獲得的只是標(biāo)準(zhǔn)HTML文件,這樣就可以不受到瀏覽器不支持的限制。和Visual Basic語言一樣,VBScript語言是大小寫不敏感的,例如,當(dāng)我們需要在頁面中引用Server對象的時(shí)候,我們使用SERVER和server都是可以的,如果我們將兩個(gè)變量定義為Book和book,在C語言中,這將被視為兩個(gè)不同的變量,可是在VBScript中,它們只會(huì)被視為一個(gè)變量。
VBScript使用ActiveX Script(即ActiveX腳本)與宿主應(yīng)用程序?qū)υ?。使用ActiveX Script,瀏覽器和其他宿主應(yīng)用程序不再需要每個(gè)Script部件的特殊集成代碼。ActiveX Script使宿主可以編譯Script、獲取和調(diào)用入口點(diǎn)及管理開發(fā)者可用的命名空間。通過ActiveX Script,語言廠商可以建立標(biāo)準(zhǔn)Script運(yùn)行時(shí)語言。
VBScript可以和HTML頁面完美地結(jié)合在一起,運(yùn)用VBScript可以控制HTML頁面,并對頁面中某些事件作出響應(yīng),例如,可以在頁面的表單提交時(shí)進(jìn)行數(shù)據(jù)有效性驗(yàn)證。VBScript還提供了許多對象和瀏覽器的對象,運(yùn)用這些對象,可以方便地進(jìn)行腳本的編寫,實(shí)現(xiàn)一些其他語言所無法實(shí)現(xiàn)的功能。
那么,VBScript究竟有哪些用途呢?下面我們先列舉幾種情況,在實(shí)際使用中,讀者也許會(huì)發(fā)現(xiàn),還會(huì)有更多的情況下會(huì)用到VBScript。
(1) 創(chuàng)建生動(dòng)的用戶界面。在一個(gè)制作精美的頁面中,為了使頁面生動(dòng)活潑,往往需要按鈕在被按下時(shí)作出某些響應(yīng),那應(yīng)該如何處理呢?當(dāng)然我們可以采用表單中的按鈕,這種按鈕的確能夠有效地實(shí)現(xiàn)所要實(shí)現(xiàn)的功能,但這種按鈕往往會(huì)破壞整個(gè)頁面的和諧美觀。我們也可以采用超鏈接來實(shí)現(xiàn),但超鏈接只能夠?qū)崿F(xiàn)按鈕被按下的結(jié)果,而不能展現(xiàn)按鈕從按下到彈起的整個(gè)過程。運(yùn)用VBScript,我們可以采用圖片來實(shí)現(xiàn)這個(gè)功能,首先我們應(yīng)該制作兩幅圖片,一幅是按鈕正常狀態(tài)的圖片,一幅是按鈕被按下的圖片,一開始時(shí)在頁面上放置正常狀態(tài)的圖片,當(dāng)鼠標(biāo)在圖片上按下時(shí),圖片切換為被按下的圖片,當(dāng)鼠標(biāo)松開時(shí)再切換為正常狀態(tài)的圖片,這樣就能夠完美地解決這個(gè)問題,既保持頁面的美觀,又使頁面變得生動(dòng)活潑。
(2) 數(shù)據(jù)有效性驗(yàn)證工作。當(dāng)用戶填寫表單并提交表單數(shù)據(jù)時(shí),可能因?yàn)橛脩舻氖韬龆兴z漏,或者由于用戶的玩笑而填入了無效的數(shù)據(jù),對這種情況應(yīng)該如何處理呢?當(dāng)然,表單的數(shù)據(jù)會(huì)送往服務(wù)器上的CGI程序,我們可以在CGI程序的處理時(shí)進(jìn)行數(shù)據(jù)有效性驗(yàn)證,然后將結(jié)果反饋給用戶,但如果是用戶的疏忽而引起的,那么他將等待一段時(shí)間后才能得到反饋結(jié)果,用戶當(dāng)然不希望有這段時(shí)間的等待;如果是用戶的玩笑而引起的,Web管理員也不希望這種毫無意義的數(shù)據(jù)送到服務(wù)器上加重服務(wù)器的負(fù)擔(dān)。我們可以運(yùn)用VBScript在客戶端進(jìn)行一次數(shù)據(jù)有效性驗(yàn)證,不論是遺漏了某些數(shù)據(jù),還是填入了無效數(shù)據(jù),都可以在表單提交前檢驗(yàn)出來,立即反饋給用戶,而不將無效的數(shù)據(jù)發(fā)向服務(wù)器。
(3) 數(shù)據(jù)查找。許多頁面中都有搜索的功能。當(dāng)用戶填入關(guān)鍵詞后,瀏覽器將關(guān)鍵詞發(fā)送給服務(wù)器,服務(wù)器上的數(shù)據(jù)庫搜索引擎立即開始工作,然后將檢索結(jié)果以HTML頁面的形式反饋給瀏覽器。這種方案當(dāng)然沒有什么不妥,但在數(shù)據(jù)量不大的情況下,比如只是在幾十條數(shù)據(jù)中進(jìn)行檢索,雖然它也能夠?qū)崿F(xiàn)數(shù)據(jù)查找的功能,但和用戶的等待時(shí)間、服務(wù)器加重的負(fù)載相比起來,采用這種方案是否有些得不償失呢?既然數(shù)據(jù)量不大,運(yùn)用VBScript,我們可以將數(shù)據(jù)存放在頁面中,用戶填入關(guān)鍵詞后并不送往服務(wù)器,而是在客戶端直接進(jìn)行查找,然后直接在客戶端將檢索結(jié)果反饋給用戶。
Set fso = CreateObject("Scripting.FileSystemObject") '獲取FSO
Set MyFile = fso.OpenTextFile("c:\testfile.txt", ForReading)‘打開文件
ReadLineTextFile = MyFile.ReadLine賦給變量
VBScript的全稱是:Microsoft Visual Basic Script Editon.(微軟公司可視化BASIC腳本版). 正如其字面所透露的信息, VBS(VBScript的進(jìn)一步簡寫)是基于Visual Basic的腳本語言. 我進(jìn)一步解釋一下, Microsoft Visual Basic是微軟公司出品的一套可視化編程工具, 語法基于Basic. 腳本語言, 就是不編譯成二進(jìn)制文件, 直接由宿主(host)解釋源代碼并執(zhí)行, 簡單點(diǎn)說就是你寫的程序不需要編譯成.exe, 而是直接給用戶發(fā)送.vbs的源程序, 用戶就能執(zhí)行了。
VBS的程序可以用任何的文本編輯器來編寫,所以最簡單的當(dāng)然是系統(tǒng)自帶的記事本羅。
VBScript程序演示:
REM 輸入并回顯你的名字
\'使用InputBox和Msgbox函數(shù)
Dim name,msg
msg="請輸入你的名字:"
name=Inputbox(msg,"名稱")
Msgbox(name)
把上面的程序清單輸入到記事本里面, 然后保存為以.vbs為擴(kuò)展名的文件("保存類型"里面選擇"所有文件").然后雙擊運(yùn)行, 觀察運(yùn)行結(jié)果. 注意:請自己輸入程序清單, 不要復(fù)制->粘貼
第一行和第二行的開頭分別是"REM"語句和" \' ", 這兩個(gè)東西的作用是相同的, 表示本行是注釋行, 就是說這兩行什么也不干,只是用來說明這段程序的功能, 版權(quán)信息等等. 注釋行是程序最重要的部分之一, 盡管它不是必需的, 但對于其他人閱讀源代碼, 以及自己分析源代碼是很有好處的. 好的習(xí)慣是在必要的地方加上清晰, 簡潔的注釋.
Dim用來聲明一個(gè)變量, 在VBS中, 變量類型并不是那么重要, 就是說VBS會(huì)幫你自動(dòng)識別變量類型, 而且變量在使用前不一定要先聲明, 程序會(huì)動(dòng)態(tài)分配變量空間. 在VBS中你不用考慮name儲(chǔ)存的是一個(gè)整數(shù)還是一個(gè)小數(shù)(學(xué)名叫"浮點(diǎn)數(shù)"), 也不用考慮是不是字符串(一串字符, 比如:"Hello World"), VBS會(huì)自動(dòng)幫你搞定. 所以第三行語句可以刪除, 效果不會(huì)變, 但我強(qiáng)烈反對這么做, 一個(gè)變量的基本原則就是:先聲明,后使用.變量名用字母開頭,可以使用下劃線,數(shù)字, 但不能使用vbs已經(jīng)定義的字, 比如dim, 也不能是純數(shù)字.
下一行被稱之為"賦值", "="是賦值符號, 并不是數(shù)學(xué)中的等于號, 盡管看起來一樣.這是正統(tǒng)的理解, 你要理解成等于也沒有什么不可. 賦值號的左邊是一個(gè)變量, 右邊是要賦給變量的值, 經(jīng)過賦值以后, msg這個(gè)變量在程序中等同于"請輸入你的名字:"這個(gè)字符串,但當(dāng)msg被再次復(fù)制的時(shí)候, 原值就會(huì)消失. 不光字符串, 其他任何變量都這樣被賦值, 例如: a=2, b=12.222等等.
再往下,Inputbox和Msgbox是VBS內(nèi)建的函數(shù), 一個(gè)函數(shù)就相當(dāng)于一個(gè)"黑箱", 有輸入(參數(shù))和輸出(返回值), 你可以不用了解函數(shù)是怎么運(yùn)作的, 只要了解這個(gè)函數(shù)能干什么就行了, 我們也可以定義自己的函數(shù), 不過那要等到以后再講. 現(xiàn)在我們只要了解, 一個(gè)函數(shù)可以有返回值也可以沒有, 可以有參數(shù)也可以沒有. 例如Inputbox就是有返回值的函數(shù), 我們用賦值號左邊的變量來"接"住InputBox的返回值--就是你輸入的內(nèi)容. 在inputbox右邊的括號里是參數(shù)列表, 每個(gè)參數(shù)用","分隔開, 每個(gè)參數(shù)有不同的功效, 比如第一個(gè)參數(shù)會(huì)顯示在提示里, 我們把msg這個(gè)變量作為第一個(gè)參數(shù)傳給了Inputbox 函數(shù), 而msg="請輸入你的名字:", 所以我們在對話框的提示欄就會(huì)看到"請輸入你的名字:" 第二個(gè)參數(shù)是對話框的標(biāo)題, 我們用直接量(學(xué)名叫"常量", 這里是"字符串常量")傳遞給函數(shù), 當(dāng)然你也可以傳遞變量. Inputbox還有很多參數(shù), 比如你在"名稱"后面再加一個(gè)","然后輸入隨便一串字符(字符串,用雙引號""包裹起來的一串字符叫做字符串)然后運(yùn)行, 看看結(jié)果. 你會(huì)發(fā)現(xiàn)用于輸入的文本框有了默認(rèn)的值, 這就是第三個(gè)參數(shù)的作用.
Msgbox函數(shù)是用來輸出的函數(shù), 在VBS中沒有專門的輸出函數(shù)(BASIC中的print,C中的printf), 所以我們只能用對話框來觀察輸出結(jié)果, Msgbox的必要參數(shù)只有一個(gè), 就是要輸出的內(nèi)容, 在這種情況下, 我們不需要理會(huì)msgbox的返回值.
注意:
1) 注釋(以REM或\'開頭)行在程序中不起作用, 但能讓別人更容易讀懂你的程序.
2) 變量好像一個(gè)盒子, 或一個(gè)代號, 可以代表你想代表的東西. 變量賦值使用"="
3) 以""包裹起來的字符稱之為"字符串"
4) 函數(shù)像一個(gè)"黑箱", 有參數(shù)和返回值, 用"="左邊的變量可以接住返回值
5) Inputbox函數(shù)彈出一個(gè)輸入對話框,Msgbox則用于輸出