【问题标题】:Can't call activex methods when the activex is in the same page as flash player当activex与flash player在同一个页面时不能调用activex方法
【发布时间】: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 论坛上发布了这个,你也在那里回复了 :)

标签: javascript flash com atl


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-11
    • 1970-01-01
    相关资源
    最近更新 更多