【问题标题】:Returning Array from ActiveX component to JavaScript将数组从 ActiveX 组件返回到 JavaScript
【发布时间】:2010-01-18 17:21:17
【问题描述】:

我有一个 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 老手,所以这一切都令人沮丧。)

谢谢!

【问题讨论】:

  • 您在什么浏览器上试用?
  • 如果您在 IE 中,您正在使用 JScript 而不是 JavaScript(这是 Mozilla 的实现)。 VBArray 构造函数应该可用。
  • 页。确保“JScript”只是 Microsoft 用于运行其他人称之为“Javascript”的解释器的名称
  • 感谢大家的回复!我正在使用 IE。所以如果我的标签是

标签: arrays activex return-value javascript


【解决方案1】:

JScript 是 Microsoft 的 Javascript 版本,来自“过去”,并且仍然很强大。

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

JScript 在 IE 或 IIS 服务器或 MS 桌面机器上不可用,所以我希望您在上述任何一种机器上运行它。

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

您也许可以通过使用 JScript Enumerator 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>" );

【讨论】:

    猜你喜欢
    • 2014-12-11
    • 2020-07-20
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    • 2011-03-27
    • 2012-04-13
    • 2013-03-29
    • 2013-02-22
    相关资源
    最近更新 更多