在IHTMLElement事件处理程序中未获取事件参数
时间:2020-03-06 14:29:54 来源:igfitidea点击:
我已经向IHTMLElement实例添加了回调,但是当为事件调用IDispatch :: Invoke时,永远没有任何参数(即pDispParams-> cArgs和pDispParams-> cNamedArgs始终为0)。例如,我为onmouseup事件添加了一个回调。据我所知,此事件的回调应该接收一个MouseEvent对象。那是对的吗?如果是这样,我需要怎么做才能确保这种情况发生?
这是在Windows XP SP2上使用IE 6 sp2(或者更高版本)的MSHTML。
解决方案
所有DOM事件(包括onmouseup)的事件参数都存储在父窗口的event属性(IHTMLWindow2 :: event)中。
如果尚未缓存父窗口,则" IHTMLElement"具有" document"属性,该属性返回" IHTMLDocument"接口。从中可以查询具有" parentWindow"属性的" IHTMLDocument2"。返回的IHTMLWindow2
具有我们要查找的event
属性。我们应该可以从那里查询事件接口。