資源描述:
《vbscript和javascript互相調(diào)用》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、vbscript和javascript互相調(diào)用>>教育資源庫ASP具備管理不同語言腳本程序的能力,能夠自動(dòng)調(diào)用合適的腳本引擎以解釋腳本代碼和執(zhí)行內(nèi)置函數(shù)。ASP開發(fā)環(huán)境提供了兩種腳本引擎,即VBScript(缺省)和JScript。不過,開發(fā)者并沒有被限制于只能使用這兩種語言,只要能夠提供合適的ActiveX腳本引擎就能使用任何腳本語言。腳本語言的選擇往往基于許多不同原因:它可能是開發(fā)者最為熟悉的語言,可能是對給定工程來說能夠提供最多特色支持的,也有可能是最具效率的。不同的環(huán)境和要求使得我們在選擇腳本語言時(shí)注重不同的因素,同時(shí)也使得我們在某些時(shí)候面臨選定的腳本語言
2、不能直接提供其它語言固有的函數(shù)這一問題,或某個(gè)腳本已經(jīng)寫成但用的卻是另外一種腳本語言。此時(shí)應(yīng)該怎么辦?是否需要用當(dāng)前所用的腳本語言重寫這些腳本?或者說,是否有可能在一種腳本語言中調(diào)用其它腳本語言的內(nèi)置函數(shù)?本文要說明的就是在ASP應(yīng)用中如何讓VBScript腳本和JScript腳本交互以最大限度地獲得兩種腳本語言的特色支持。一、VBScript和JScript的內(nèi)置函數(shù)在VBScript和JScript中,有大量的內(nèi)置函數(shù)功能是相同或類似的。然而,在一種腳本語言中內(nèi)置的函數(shù)并非總是在另外一種腳本語言中也有對應(yīng)的函數(shù)。例如,VBScript提供了許多用于操作字符串和
3、格式化數(shù)據(jù)的函數(shù),這些函數(shù)在JScript中并不存在。這些函數(shù)包括StrReverse()、Filter()以及FormatCurrency()等。在另一方面,JScript所提供的用于管理數(shù)組、字符串編碼等的函數(shù)在VBScript中也沒有定義,如join()、reverse()、poatCurrency(),則可以聲明如下自定義函數(shù):<SCRIPTLANGUAGE=VBSCRIPTRUNAT=SERVER>FunctionFormatValue(Value)FormatValue=FormatCurrency(Value)EndFunction<
4、;/SCRIPT>接下來在JScript代碼中就可以象普通JScript函數(shù)一樣調(diào)用FormatValue()了。用類似的方法也可以實(shí)現(xiàn)VBScript代碼調(diào)用JScript函數(shù)。應(yīng)用同樣的規(guī)則,我們可以在任何腳本內(nèi)調(diào)用任何用戶定義函數(shù)。不過,從JScript腳本內(nèi)調(diào)用一個(gè)不帶參數(shù)的VBScript過程(Sub)時(shí)應(yīng)略加注意,此時(shí)在JScript中應(yīng)該象調(diào)用一個(gè)不帶參數(shù)的JScript函數(shù)一樣調(diào)用它,如用foo()調(diào)用VBScriptSubfoo過程。三、數(shù)據(jù)共享在某些情形下混合運(yùn)用VBScript和JScript函數(shù)是非常有用的,但在不同語言腳本之間共享數(shù)
5、據(jù)也可能很有用。實(shí)現(xiàn)這種共享的方法很簡單:不管使用的是什么語言,只要是在頁面級(jí)聲明的變量就可以任意引用。對象的使用方法也相似,可以任意選用合適的語言讀取、修改屬性或調(diào)用對象的方法。當(dāng)然給定對象的屬性和方法是由創(chuàng)建該對象實(shí)例的語言所定義的。正如上例VBScript的過程調(diào)用,當(dāng)從JScript中調(diào)用一個(gè)不帶參數(shù)的VBScript對象的方法時(shí),其調(diào)用方法也遵從JScript的調(diào)用規(guī)則,反之亦然。四、數(shù)組管理數(shù)組共享問題稍微復(fù)雜一點(diǎn)。雖然數(shù)組也象其它變量一樣可以在不同語言腳本之間共享,但必須注意兼容方面的問題。VBScript數(shù)組在JScript下可以用VBScript
6、的符號(hào)引用,即用myArray(2)引用數(shù)組元素而不是JScript的數(shù)組元素引用符號(hào)myArray[2]。此外,還可以使用一個(gè)特殊的JScript對象——VBArray對象將VBScript數(shù)組轉(zhuǎn)換為JScript數(shù)組。下面的代碼從VBScript數(shù)組myVBArray創(chuàng)建JScript數(shù)組myJSArray:varTemp=neyVBArray)varmyJSArraymyJSArray=Temp.toArray()上述代碼首先創(chuàng)建一個(gè)臨時(shí)的VBArray對象,然后使用它的toArray()方法將自己轉(zhuǎn)換為JScript數(shù)組。此后就可以象普通JScript數(shù)組
7、一樣使用myJSArray,如myJSArray[1]。但應(yīng)當(dāng)注意的是,toArray()方法將把一個(gè)多維的VBArray轉(zhuǎn)換為一維的JScript數(shù)組。從VBScript中引用JScript數(shù)組更為復(fù)雜。雖然在VBScript中我們可以直接訪問JScript數(shù)組相關(guān)的方法和屬性,但沒有直接訪問JScript數(shù)組的單個(gè)元素的方法。也就是說,我們可以在VBScript腳本中讀取JScript數(shù)組的長度屬性,如下所示:x=myJSArray.length但無法直接讀取該數(shù)組的單個(gè)元素,下面的VBScript代碼是不正確的:x=myJSArray(3)解決該問題的一個(gè)可
8、行的方法是