当activex与flash player在同一个页面时不能调用activex方法

Posted

技术标签:

【中文标题】当activex与flash player在同一个页面时不能调用activex方法【英文标题】:Can't call activex methods when the activex is in the same page as flash player 【发布时间】:2011-01-24 21:04:47 【问题描述】:

我创建了一个自定义的 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 播放器。我尝试直接在javascript中调用它。我又收到了同样的例外。那么可能是因为同一个网页中存在两个activex?

【问题讨论】:

这是一个 ATL 控件。但是我已经设法解决了这个问题。非常感谢您检查这一点。顺便说一句,我已经在 MSDN 论坛上发布了这个,你也在那里回复了 :) 【参考方案1】:

最后我发现调用需要异步。如果从一个 ActiveX 发起调用并调用另一个 ActiveX,则在某些浏览器中会失败。解决方案是先将呼叫排队,然后再向另一个 ActiveX 发起另一个呼叫。

【讨论】:

以上是关于当activex与flash player在同一个页面时不能调用activex方法的主要内容,如果未能解决你的问题,请参考以下文章

IE8升级新版Flash Player ActiveX14导致的discuz图片附件无法上传 解决方法

我如何在我的 Web 应用程序中使用不带 Flash Player 的 Internet Explorer 管理网络摄像头?

Adobe Air 与 Flash Player 10.1 运行时

Flash Player信任文件无法与Linux上的嵌入式浏览器一起使用

在 Flash Player 中从 ByteArray 播放 FLV

如何导出与 Flash Player 8 兼容的 Adob​​e Flash cc 文件?