描述:
我在控件里面定义了三个事件,在vb中调用这个控件时,都能够接收到。而在HTML里面调用这个控件时,有一个事件可以接收到,另外两个接收不到。这会是什么问题?
下面是我在html里面定义的三个事件
<SCRIPT LANGUAGE=javascript FOR=Call1 EVENT="OnConnectionEstablished()">
<!--
alert("bbb");
//-->
</SCRIPT>
<SCRIPT LANGUAGE=javascript FOR=Call1 EVENT="OnConnectionCleared(duration,reason)">
<!--
alert("aaa");
//-->
</SCRIPT>
<SCRIPT LANGUAGE=javascript FOR=Call1 EVENT="OnMessageReceived(messagetype,message)">
<!--
alert("ccc"); // 这个事件可以接收到
//-->
</SCRIPT>
解决方案1:
up
解决方案2:检查大小写看看?
解决方案3: 呵呵,支持一下
IE支持多线程的。问题出在控件对于连接点的支持上。微软出了个补丁IConnectionPointImplMT,令连接点在子线程上FIER_ON可令IE接收到。
class CProxy_IChatObjEvents : public IConnectionPointImplMT<T, &DIID__IChatObjEvents, CComDynamicUnkArray>
//CComPtr<IUnknown> sp = m_vec.GetAt(nConnectionIndex);
//把上面那行ATL生成的代码改为下面两行代码,以支持工作者线程触发事件。
CComPtr<IUnknown> sp;
sp.Attach (GetInterfaceAt(nConnectionIndex));
当然,使得第三个事件起作用的最简单方法就是把第二和第三个事件互换名字,
你就会发现哪里有问题啦,^_^
把不能接受的,改成除了名称以外,完全一样的。
我就不信不行。