将一个字节数组从activex返回到javascript

时间:2009-08-03 19:58:27

标签: c# javascript activex

我使用c#构建了一个小型的activex控件。我有一个返回字节数组的函数。由于某些原因,当我尝试在js中查询返回的数组时,我收到一个未定义的值。为什么会这样?无论如何要解决它?

以下是我的代码的简单演示:

的ActiveX:

[ComVisible(true)]
        public byte[] Close()
        {
            try
            {
                MessageBox.Show("called from activex Close");
                return Stop();
            }
            catch (Exception e)
            {
                //ExceptionHandling.AppException(e);
                throw e;
            }
        }

Javascript致电:

function CloseActiveX(){
var myRslt = document.OurActiveX.Close();
}

1 个答案:

答案 0 :(得分:1)

您尚未显示Stop()方法包含的内容。如果Stop()返回null,您应该会看到您所看到的内容。

然而,就目前而言,看起来您的ActiveX控件是用.NET编写的。这是一个糟糕的主意,出于各种原因,其中性能最低,并且如果浏览器中运行其他需要不同版本框架的控件或扩展,则会遇到问题。

除了这个问题之外,可能的问题是byte[]没有以允许其使用的方式被编组回调用者。您需要返回具有以下属性的VARIANT:ARRAY,BYREF,U1。

Default Marshaling for Arrays可能有用。