国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > ASP > 正文

ASP頁(yè)面內(nèi)VBScript和JScript的交互(轉(zhuǎn))

2024-05-04 11:06:18
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

asp具備管理不同語(yǔ)言腳本程序的能力,能夠自動(dòng)調(diào)用合適的腳本引擎以解釋腳本代碼和執(zhí)行內(nèi)置函數(shù)。asp開(kāi)發(fā)環(huán)境提供了兩種腳本引擎,即vbscript(缺省)和jscript。不過(guò),開(kāi)發(fā)者并沒(méi)有被限制于只能使用這兩種語(yǔ)言,只要能夠提供合適的activex腳本引擎就能使用任何腳本語(yǔ)言。

   腳本語(yǔ)言的選擇往往基于許多不同原因:它可能是開(kāi)發(fā)者最為熟悉的語(yǔ)言,可能是對(duì)給定工程來(lái)說(shuō)能夠提供最多特色支持的,也有可能是最具效率的。不同的環(huán)境和要求使得我們?cè)谶x擇腳本語(yǔ)言時(shí)注重不同的因素,同時(shí)也使得我們?cè)谀承r(shí)候面臨選定的腳本語(yǔ)言不能直接提供其它語(yǔ)言固有的函數(shù)這一問(wèn)題,或某個(gè)腳本已經(jīng)寫(xiě)成但用的卻是另外一種腳本語(yǔ)言。

   此時(shí)應(yīng)該怎么辦?是否需要用當(dāng)前所用的腳本語(yǔ)言重寫(xiě)這些腳本?或者說(shuō),是否有可能在一種腳本語(yǔ)言中調(diào)用其它腳本語(yǔ)言的內(nèi)置函數(shù)?本文要說(shuō)明的就是在asp應(yīng)用中如何讓vbscript腳本和jscript腳本交互以最大限度地獲得兩種腳本語(yǔ)言的特色支持。

   一、vbscript和jscript的內(nèi)置函數(shù)

   在vbscript和jscript中,有大量的內(nèi)置函數(shù)功能是相同或類(lèi)似的。然而,在一種腳本語(yǔ)言中內(nèi)置的函數(shù)并非總是在另外一種腳本語(yǔ)言中也有對(duì)應(yīng)的函數(shù)。例如,vbscript提供了許多用于操作字符串和格式化數(shù)據(jù)的函數(shù),這些函數(shù)在jscript中并不存在。這些函數(shù)包括strreverse()、filter()以及formatcurrency()等。在另一方面,jscript所提供的用于管理數(shù)組、字符串編碼等的函數(shù)在vbscript中也沒(méi)有定義,如join()、reverse()、pow()、位操作、escape()和unescape()等。

   那么,如果在jscript程序中需要一個(gè)vbscript函數(shù)該怎么辦呢?

   二、異種腳本的互相調(diào)用

   如果需要在jscript腳本中調(diào)用一個(gè)vbscript中內(nèi)置的函數(shù),則應(yīng)該寫(xiě)一個(gè)vbscript用戶定義函數(shù)(在這里調(diào)用vbscript內(nèi)置函數(shù)),然后在jscript腳本中象調(diào)用公用jscript函數(shù)一樣調(diào)用這個(gè)用戶定義函數(shù)。

   例如,如果要調(diào)用的vbscript內(nèi)置函數(shù)是formatcurrency(),則可以聲明如下自定義函數(shù):

 < script language="vbscript" runat="server">
 function formatvalue(value)
  formatvalue = formatcurrency(value)
 end function
 < /script>

   接下來(lái)在jscript代碼中就可以象普通jscript函數(shù)一樣調(diào)用formatvalue()了。用類(lèi)似的方法也可以實(shí)現(xiàn)vbscript代碼調(diào)用jscript函數(shù)。

   應(yīng)用同樣的規(guī)則,我們可以在任何腳本內(nèi)調(diào)用任何用戶定義函數(shù)。不過(guò),從jscript腳本內(nèi)調(diào)用一個(gè)不帶參數(shù)的vbscript過(guò)程(sub)時(shí)應(yīng)略加注意,此時(shí)在jscript中應(yīng)該象調(diào)用一個(gè)不帶參數(shù)的jscript函數(shù)一樣調(diào)用它,如用foo()調(diào)用vbscript sub foo過(guò)程。

   三、數(shù)據(jù)共享

   在某些情形下混合運(yùn)用vbscript和jscript函數(shù)是非常有用的,但在不同語(yǔ)言腳本之間共享數(shù)據(jù)也可能很有用。實(shí)現(xiàn)這種共享的方法很簡(jiǎn)單:不管使用的是什么語(yǔ)言,只要是在頁(yè)面級(jí)聲明的變量就可以任意引用。

   對(duì)象的使用方法也相似,可以任意選用合適的語(yǔ)言讀取、修改屬性或調(diào)用對(duì)象的方法。當(dāng)然給定對(duì)象的屬性和方法是由創(chuàng)建該對(duì)象實(shí)例的語(yǔ)言所定義的。正如上例vbscript的過(guò)程調(diào)用,當(dāng)從jscript中調(diào)用一個(gè)不帶參數(shù)的vbscript對(duì)象的方法時(shí),其調(diào)用方法也遵從jscript的調(diào)用規(guī)則,反之亦然。

   四、數(shù)組管理

   數(shù)組共享問(wèn)題稍微復(fù)雜一點(diǎn)。雖然數(shù)組也象其它變量一樣可以在不同語(yǔ)言腳本之間共享,但必須注意兼容方面的問(wèn)題。

   vbscript數(shù)組在jscript下可以用vbscript的符號(hào)引用,即用myarray(2)引用數(shù)組元素而不是jscript的數(shù)組元素引用符號(hào)myarray[2]。此外,還可以使用一個(gè)特殊的jscript對(duì)象——vbarray對(duì)象將vbscript數(shù)組轉(zhuǎn)換為jscript數(shù)組。下面的代碼從vbscript數(shù)組myvbarray創(chuàng)建jscript數(shù)組myjsarray:

 var temp = new vbarray(myvbarray)
 var myjsarray
 myjsarray = temp.toarray()

   上述代碼首先創(chuàng)建一個(gè)臨時(shí)的vbarray對(duì)象,然后使用它的toarray()方法將自己轉(zhuǎn)換為jscript數(shù)組。此后就可以象普通jscript數(shù)組一樣使用myjsarray,如myjsarray[1]。但應(yīng)當(dāng)注意的是,toarray()方法將把一個(gè)多維的vbarray轉(zhuǎn)換為一維的jscript數(shù)組。

   從vbscript中引用jscript數(shù)組更為復(fù)雜。雖然在vbscript中我們可以直接訪問(wèn)jscript數(shù)組相關(guān)的方法和屬性,但沒(méi)有直接訪問(wèn)jscript數(shù)組的單個(gè)元素的方法。也就是說(shuō),我們可以在vbscript腳本中讀取jscript數(shù)組的長(zhǎng)度屬性,如下所示:

   x = myjsarray.length

   但無(wú)法直接讀取該數(shù)組的單個(gè)元素,下面的vbscript代碼是不正確的:

   x = myjsarray(3)

   解決該問(wèn)題的一個(gè)可行的方法是執(zhí)行一個(gè)轉(zhuǎn)換過(guò)程,如下面的代碼所示,此處假定vbscript是缺省的腳本語(yǔ)言:

< %
  dim temp
  dim myvbarray
  temp = myjsarray.join(", ")
  myvbarray = split(temp, ", ")
%>

   此處的jscript join()方法將數(shù)組myjsarray元素轉(zhuǎn)換到一個(gè)以逗號(hào)為分割符的字符串,vbscript split()函數(shù)將字符串轉(zhuǎn)換為vbscript數(shù)組。注意這里我們是在vbscript環(huán)境下調(diào)用jscript的join方法。依照此例,我們可以通過(guò)自定義vbscript函數(shù)來(lái)模擬jscript的vbarray對(duì)象的toarray()方法以實(shí)現(xiàn)jscript數(shù)組到vbscript數(shù)組的轉(zhuǎn)換。

   五、小結(jié)

   在同一個(gè)asp工程內(nèi)靈活選用不同腳本語(yǔ)言具有許多優(yōu)點(diǎn),這些腳本之間的交互能力更為開(kāi)發(fā)者集成不同語(yǔ)言所提供的內(nèi)置函數(shù)和其它功能帶來(lái)了更多的機(jī)會(huì),同時(shí)也使得實(shí)現(xiàn)既可用于vbscript也可用于jscript環(huán)境的通用腳本庫(kù)成為可能。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 红原县| 靖边县| 周至县| 青川县| 射洪县| 崇阳县| 康乐县| 台山市| 阿尔山市| 奎屯市| 松溪县| 巴马| 平阴县| 徐闻县| 公安县| 崇州市| 辉县市| 台中县| 麟游县| 安福县| 长乐市| 鄂托克前旗| 资溪县| 磐石市| 香港 | 阜南县| 延边| 白银市| 湟源县| 宜章县| 三河市| 大邑县| 安国市| 唐河县| 绥阳县| 高台县| 耒阳市| 鹿邑县| 隆尧县| 沙洋县| 土默特左旗|