在JavaScript中使用枚举器

时间:2011-02-18 19:09:46

标签: javascript internet-explorer vbscript activex

我有以下VBScript代码,我想在JavaScript中表达:

Sub GxUIProxyVB_OnLogon 

    Dim EntityProxy

    For Each EntityProxy In GxUIProxyVB.ListEntityProxy 
        MsgBox EntityProxy.Name 
    Next 

End Sub

要提供上下文,此代码是ActiveX控件的登录事件的登录后事件处理程序。 ActiveX控件托管在Internet Explorer 8中运行的网页中。网页用户通过ActiveX控件的登录机制成功登录,从而触发此代码的执行。

在代码中 GxUIProxyVB 是对通过HTML元素嵌入DOM中的ActiveX控件对象的引用。

这是我到目前为止的JavaScript:

function GxUIProxyVB::OnLogon()
{
    var EntityProxy; 
    // For Each EntityProxy In GxUIProxyVB.ListEntityProxy 
    //     alert(EntityProxy.Name);
    // Next 
}

我已经评论了我正在努力解决的问题:枚举 GxUIProxyVB.ListEntityProxy 的值。

从IE8的监视列表中截取的屏幕显示 ListEntityProxy 对象的成员 Screen capture of IE 8's watch list

作为一种解决方法,我意识到我可以将代码保留在VBScript中,因为用户可能只会使用Internet Explorer来访问此内容,但我宁愿用JavaScript来代码维护。 (我不希望维护此代码的未来Web开发人员需要精通VBScript。)

1 个答案:

答案 0 :(得分:3)

您必须使用Enumerator对象:

function gxUIProxyVB_OnLogon() {
    var entityProxy; 
    for (var enr = new Enumerator(GxUIProxyVB.ListEntityProxy); !enr.atEnd(); enr.moveNext()) {
        entityProxy = enr.item();
        alert(entityProxy.Name);
    }
}