2010-01-18 69 views
0

我有一个ActiveX组件(其没写和没有控制权)。它有几个我想用的方法,返回数组。每次我试图做类似的东西:返回数组从ActiveX组件为JavaScript

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

什么浏览器(S)你想这个吗? – JonoW 2010-01-18 17:31:08

+1

如果你在IE中,你*是使用JScript而不是JavaScript(这是Mozilla的实现)。 VBArray构造函数应该可用。 – bobince 2010-01-18 18:14:10

+0

p。确保“JScript”只是微软用于解释器的名称,它运行其他人称之为“Javascript”的解释器 – Pointy 2010-01-18 18:14:27

回答

2

JScript是的Javascript微软版本的“回天”,并依然强劲。

第一个问题必须要在那里你想使用它?在浏览器中?内联网?只有IE?服务器端?

JScript是不是比IE或IIS服务器或MS的台式机,所以我希望你在上面的一个上运行它的任何其他可用。

的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>");