Javascript与vbscript数据共享

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

  1、普通全局变量

  在browser里,引用一个全局变量,可以有很多方法,你可以直接引用该变量,也可以用window.variable来引用全局变量,原因是因为全局变量属于window的窗体,但是当每新开一个窗口,浏览器会自动清空先前已有变量(也就是说,每个新开页面都是一个“有清白之身的web页”,因此在新开的窗口里是不可以引用之前定义的变量,如果要引用,可以变向获取,如通过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.

  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>

  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

  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