能否使用JavaScript将ActiveX控件附加到页面上?

4
我正在尝试使用jQuery动态地将一个ActiveX控件附加到页面上。附加成功了,但是以这种方式完成后,控件没有初始化。我认为当包含控件的页面完成渲染时,IE会调用ActiveX控件的OnCreate方法。问题在于,直到渲染完成后,页面上才有标签,因此OnCreate从未被调用。
我不确定这是否是问题,这只是一个猜测。有人有这方面的经验吗?是否可能强制IE在特定时间调用OnCreate?
如果html中存在标签,则控件可以正常工作。我遇到问题的唯一情况是通过JavaScript将对象添加到页面中。
更新:我需要知道IE在遇到

时会发生什么。
<object>

在渲染页面时添加标签。该控件在该上下文中正常工作,因此IE在那时调用了某些内容。我需要在添加控件后手动调用它。

谢谢,Pete


不好意思?jQuery('body').append(activeX); 你真的需要看到那个吗? - slypete
是的,我们会这样做。让别人在黑暗中尝试调试是一个坏主意,因为第一个假设就是你不知道自己在做什么。 - EricLaw
2个回答

1

您可以使用 new ActiveXObject(ProgID) 的方式来实例化控件,但这种方式完全不跨平台友好。其中,ProgID 是一个形如 "应用程序名称.类型名称" 的字符串。例如:

var excel;
excel = new ActiveXObject("Excel.Application");
...

如果您的计算机上没有安装Excel,则此示例将无法正常工作。


谢谢,你能解释一下这里的命名吗?我已经有控件的源代码了,所以我只需要知道要查找什么。目前,我提供的只是在对象标记中的 CLSID 和 codebase cab。 - slypete
你知道这些是什么吗?例如,上面的Application是否实现了IDispatch接口?我有一个自定义的ActiveX控件,需要确定这些值。 - slypete

0
今天我在IE下使用Java applet时遇到了与你类似的问题。我的解决方法(我想在页面完成渲染后放置applet)是动态创建一个不可见的iframe,其src指向一个包含我的applet的简单HTML页面。加载iframe后,我调用它的父级来通知applet已经加载完毕。

我无法使用iframe,因为此控件正在加载到支持拖放的小部件框架中。 - slypete

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接