Javascript只接收一次ActiveX事件

时间:2009-10-25 16:17:33

标签: javascript c++ events activex

我使用ATL编写了一个ActiveX控件。我使用向导添加了对添加public IConnectionPointContainerImpl<CActiveX>CProxy_IActiveXEvents<CActiveX>的连接点的支持,其中CProxy_...是向导生成的代码来触发事件。

我已经定义了一个dispinterface如下:

  

[           UUID(43ECB3DF-F004-4FAD-9BFB-79211A693C3A),           helpstring(“ActiveX事件”)       ]       dispinterface _IActiveXEvents       {           特性:           方法:               [id(1)] void receiveCertificate([in] VARIANT_BOOL isPermissionGranted,[in] BSTR certificateXml);       };

并将其包含在[default,source] dispinterface _IActiveXEvents的coclass中。要触发事件,我调用Fire_receiveCertificate(isGranted, _bstr_t(certXml.c_str()).copy()),这是在向导代码中定义的。

以下Javascript将收到活动

function ActiveXObject::receiveCertificate(permission, certificate) {
      alert("alert!");
  }

问题是它只收到一次事件,我必须关闭并重新打开IE才能让它再次接收事件。我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

如果有人有兴趣,我找到了解决这个问题的方法。我在ROT(运行对象表)中注册了该对象,但没有撤销任何以前存在的注册。因此,出现了多个注册。一旦我确保撤销之前的注册,事件就会被可靠地解雇。