将数组从ActiveX组件返回到JavaScript

时间:2010-01-18 17:21:17

标签: arrays activex return-value javascript

我有一个ActiveX组件(我没有写,也没有控制权)。它有几个我想要使用的方法,它们返回数组。每当我尝试做某种事情时:

var arrayValue = axObj.methodWhichReturnsArray();

arrayValue对象未定义。组件提供商告诉我,我不应该遇到任何我正在描述的问题。我执行它传递的空检查(意味着axObj不为空)。

然而,组件提供程序在他的示例中使用的是JScript,而不是JavaScript,类似于

var arrayVar = axComponent.getListAsArray();
var theArray = (new VBArray(arrayVar)).toArray();
alert(theArray[0]);
alert(theArray[1]);
alert(theArray[2]); 

但是,我再次使用JavaScript(并且从未使用过JScript),所以我不确定它们的区别是什么......

(而且我是一位经验丰富的Java老手,所以这一切都令人沮丧。)

谢谢!

1 个答案:

答案 0 :(得分:2)

JScript是“当天回归”的Javascript的微软版本,并且仍然很强大。

第一个问题必须在哪里尝试使用它?在浏览器中?内联网? IE只?服务器侧λ

除了IE或IIS服务器或MS桌面计算机之外的任何其他设备都没有JScript,因此我希望您在以上某个计算机上运行它。

JScript中有一个特殊的功能,用于将VBScript数组转换为JScript数组(因为它们的存储方式不同),这是代码中的VBArray函数。

您可以使用JScript枚举器http://msdn.microsoft.com/en-us/library/6ch9zb09(VS.85).aspx

解决此问题

类似(虽然未经测试):

var fso = new ActiveXObject("Scripting.FileSystemObject");
var e = new Enumerator(fso.Drives);
var myArray = [];
do {
 myArray.push( e.item() );
 e.moveNext();
} while ( !e.atEnd() );

document.write( myArray.join( "<li>" );