JavaScript与VBScript数据共享与交互方法

作者:闭包旅人

时间:2026-10-28

浏览:216

本文详细解析在浏览器环境中JavaScript与VBScript之间的数据交互机制。涵盖全局变量共享、对象与函数直接调用、原型成员访问、类实例交互,以及VBScript数组与JavaScript数组的双向转换方法,重点介绍VBArray对象的使用及数组扁平化处理。

文章目录

如有纰漏之处,请指出,谢谢



全局变量共享机制

1、普通全局变量


在浏览器环境中,引用全局变量有多种方式。可以直接使用变量名,或通过window.variable形式访问,因为全局变量本质上是window对象的属性。需要注意的是,每次打开新窗口时,浏览器会清空之前的变量状态,使得新页面成为一个独立的“清白”环境,无法直接引用之前窗口定义的变量。若需跨窗口获取数据,可通过URL参数传递等间接方式实现。例如:


<script>


var global = "this is a global var."


</script>


<SCRIPT LANGUAGE="vbScript">


<!--

alert(window.global)


alert(global)


//-->

</SCRIPT>



输出结果:


this is a global var.


this is a global var.



VBScript调用JavaScript对象与函数

2、vbs引用js的对象(非原型prototype对象)、函数


可以直接通过对象名.属性名的方式进行引用:



<SCRIPT LANGUAGE="JavaScript">


<!--

function obj(){};


obj.string="test";


obj.replacec=function(s){return s.replace(/c/,"")};


//-->

</SCRIPT>


<SCRIPT LANGUAGE="vbScript">


<!--

alert(obj.string)


obj.string="change"


alert(obj.string)


alert(obj.replacec(obj.string))


//-->

</SCRIPT>



输出结果:


change


hange



当js使用prototype类型时,vbs可通过以下方法访问js的成员:



<SCRIPT LANGUAGE="JavaScript">


<!--

function myClass(s)


{

this.s=s


return this;


};

myClass.prototype.output=function()


{

alert(this.s);


}

var obj=new myClass("blueDestiny");


//-->

</SCRIPT>


<SCRIPT LANGUAGE="vbScript">


<!--

obj.output()


//-->

</SCRIPT>



JavaScript调用VBScript类实例

3、js里调用vbs里的class,可先在vbs里先生成一个实例,js可以通过这个实例来访问vbs的成员。



<SCRIPT LANGUAGE="vbScript">


<!--

class myClass


public s


public sub alertstring()


alert(s)


end sub


end class


set obj=new myClass


//-->

</SCRIPT>


<SCRIPT LANGUAGE="JavaScript">


<!--

obj.s="blueDestiny"


obj.alertstring()


//-->

</SCRIPT>


输出结果:


blueDestiny



VBScript与JavaScript数组互转

4、js调用vbs定义的数组问题,可直接得用下标来获得第几个元素的值。



<SCRIPT LANGUAGE="vbScript">


dim a(2)


a(0)="blue"


a(1)="destiny"


</script>



<script>


<!--

alert(a(0))


alert(a(1))


//-->

</SCRIPT>


输出结果:


blue


destiny



但是,如何将vbs的数组转换成js的数组呢?可以利用js的VBArray()对象,以及toArray()方法,值得注意的是,toArray()方法得出的是一个一维数组:



<SCRIPT LANGUAGE="VBScript">


<!--

Function CreateVBArray()


Dim i, j, k


Dim a(2, 2)


'初始化二维数组


k = 1


For i = 0 To 2


For j = 0 To 2


a(j, i) = k


document.writeln(k)


k = k + 1


Next


document.writeln("<BR>")


Next


CreateVBArray = a


End Function


-->

</SCRIPT>



<SCRIPT LANGUAGE="JScript">


<!--

function VBArrayTest(vbarray)


{

//调用VBArray()对象,将vbs数组转化为js的数组并调用toArray()方法得到一维数组。


var a = new VBArray(vbarray);


var b = a.toArray();


var i;


for (i = 0; i < 9; i++)


 {

document.writeln(b[i]);


 }

}

VBArrayTest(CreateVBArray());


-->

</SCRIPT>


输出结果:


1 2 3


4 5 6


7 8 9


1 2 3 4 5 6 7 8 9



5、js数组转化为vbs数组:


得到js的数组长度,可直接用length属性获得



<SCRIPT LANGUAGE="JavaScript">


<!--

var arr=["blue","Destiny"];


//-->

</SCRIPT>


<SCRIPT LANGUAGE="vbScript">


<!--

alert(arr.length)


//-->

</SCRIPT>



输出结果:


2



如果要通过下标访问js的数组元素,将无法获取,但可通过现有的方法:join()(js里的方法)以及Split()



<SCRIPT LANGUAGE="vbScript">


<!--

'注:这里不可用vbs的join(arr,",")方法,实际上这里所用到的是js里的join方法,并且为vbs的


vbarr=arr.join(",")


vbarr=split(vbarr,",")


alert(vbarr(0))


alert(vbarr(1))


//-->

</SCRIPT>



输出结果


blue


Destiny

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章