当前位置: 首页 > 编程语言 > C#

如何使用MSHTML的addEventListener在IE9中添加事件监听器?分享

时间:2023-04-10 16:56:03 C#

IE9中如何使用MSHTML的addEventListener添加事件监听器?addEventListener的MSDN文档说它接受IDispatch*对象形式的回调函数。从C#(我正在使用COM互操作),VisualStudio将参数类型显示为对象。我寻找IEventListener接口或类似的东西,但没有找到。我应该通过什么?经过一些研究,我了解到这些COM连接点(事件处理程序)是用DispId(0)指定的。回调函数由类的实例表示,例如://这些属性可能是可选的,具体取决于项目配置。[ComVisible(true)][ClassInterface(ClassInterfaceType.AutoDispatch)]publicclassEventListener{[DispId(0)]//“目标”参数是一个实现细节。publicvoidNameDoesNotMatter(objecttarget,IDOMEventevt){...}}由于DispId(0)指定要调用的默认方法,因此方法的实际名称无关紧要。但是,方法参数绝对重要。例如,必须为IHTMLElement.onclick分配一个不带参数的回调,而具有一个类型参数(或IHTMLEventObj2,...,6,甚至只是对象)的IHTMLElement2.attachEvent会进行回调。总之,COMIDispatch回调可以在C#中使用COM可见类实现,该类具有接受正确参数的方法,并用[DispId(0)]注释。尽管如此,避免使用W3CDOMEventsAPI的解决方案可能更合适,因为当浏览器使用较低的文档模式实现兼容性时,IE9DOM对象不支持此方法。例如,使用addEventListener的扩展将在Bing等以IE7模式呈现的页面上失败。似乎也没有办法设置IWebBrowser2实例使用的文档模式,只能通过F12开发人员工具手动设置。以上是C#学习教程:如何在IE9中使用MSHTML的addEventListener添加事件监听器?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: