我一直在研究用C#编写的BHO /工具栏,该工具栏用于侦听浏览器当前网页中引发的HTML事件。该解决方案包含一个名为HtmlPageEventManager的可重用类,其目的是为每个打开的新网页订阅HTML事件的给定列表。目标是在用户可以开始与页面元素进行交互之后立即附加处理程序,即使在页面加载完成之前也是如此。使用这个类很简单 - 只需要调用构造函数:从BHO收听HTML事件
var evts = new List() { HtmlEvent.onclick, HtmlEvent.ondblclick, HtmlEvent.onkeydown, HtmlEvent.onselectstart, HtmlEvent.onselectionchange, HtmlEvent.onfocus, HtmlEvent.onselect }; new HtmlPageEventManager(this, evts, this.HtmlEventHandler);
请download my solution here尝试一下,并给我反馈。如果您觉得它有用,请随意在自己的项目中使用它。虽然它运作良好,但有些时候它无法附加事件。我很难指出这些情况。所以我可以使用一些帮助改进HtmlPageEventManager。
我的解决方案引用了SpicIE的程序集,但它们未包含在上述下载中,因此您需要从the SpicIE website获取它。顺便说一句,这可能是个好时机:SpicIE有多受欢迎?任何更好的工具使用?
我发现一个可重现的情况,HtmlPageEventManager无法附加事件。当你最初打开一个网页时,它可以在95%的时间内正常工作。但是,当您“刷新”该页面时,事件注册将丢失。遍历调试器,一切都如预期的那样。 Google搜索(http://www.google.com/search?q=IWebBrowser2+detect+refresh)显示这是一个常见问题。这看起来并不像我有时间单独追求这一点。所以如果你有兴趣以这种方式帮助改进HtmlPageEventManager,请在这里发布和/或联系我。 – HappyNomad 2009-09-12 18:33:16