我使用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();
}
答案 0 :(得分:1)
您尚未显示Stop()方法包含的内容。如果Stop()
返回null,您应该会看到您所看到的内容。
然而,就目前而言,看起来您的ActiveX控件是用.NET编写的。这是一个糟糕的主意,出于各种原因,其中性能最低,并且如果浏览器中运行其他需要不同版本框架的控件或扩展,则会遇到问题。
除了这个问题之外,可能的问题是byte[]
没有以允许其使用的方式被编组回调用者。您需要返回具有以下属性的VARIANT:ARRAY,BYREF,U1。