我创建了一个自定义的ActiveX控件,并公开了一种称为getDesktopWindows
的方法。然后,我使用以下JavaScript对其进行调用:
var plugin = document.getElementById("myPlugin");
var wins = plugin.getDesktopWindows();
到目前为止,一切正常。然后,将代码包装到javascript函数中,并使用flex应用程序对其进行调用。
使用Javascript:
function getDesktopWindows() {
var plugin = document.getElementById("myPlugin");
var wins = plugin.getDesktopWindows();
return wins;
}
在Flex中:
var wins = ExternalInterface.call("getDesktopWindows");
现在,我将收到“ Microsoft JScript运行时错误:对象不支持此属性或方法”
猜测该问题是因为该呼叫源自Flash Player。我尝试直接在javascript中调用它。再一次,我收到了同样的例外。可能是因为同一网页中存在两个Activex吗?
最后我发现呼叫需要异步。如果已从ActiveX发起呼叫并呼叫到另一个ActiveX,则在某些浏览器中该呼叫将失败。解决方案是先将呼叫排队,然后再发起对另一个ActiveX的另一个呼叫。