我一直在研究用C#编写的BHO /工具栏,它侦听浏览器当前网页上引发的HTML事件。该解决方案包括一个称为HtmlPageEventManager的可重用类,其目的是为每个打开的新网页订阅HTML事件的给定列表。目标是在用户可以开始与页面元素进行交互时甚至在页面加载完成之前就附加处理程序。使用此类很简单-只需调用构造函数即可:
var evts = new List(){
HtmlEvent.onclick,HtmlEvent.ondblclick,HtmlEvent.onkeydown,
HtmlEvent.onselectstart,HtmlEvent.onselectionchange,
HtmlEvent.onfocus,HtmlEvent.onselect
};
新的HtmlPageEventManager(this,evts,this.HtmlEventHandler);
请download my solution here尝试一下并向我发送反馈。如果发现有用,请在自己的项目中随意使用它。尽管效果很好,但有时仍无法附加事件。我很难指出这些情况。因此,我可以使用一些帮助来改进HtmlPageEventManager。
我的解决方案引用了SpicIE的程序集,但上述下载中未包括它们,因此您需要从the SpicIE website中获取它。顺便说一句,这可能是一个很好的时机:SpicIE的受欢迎程度如何?还有更好的工具吗?
最佳答案
是的我通过订阅BHO的DownloadComplete事件解决了“刷新”问题,在该事件中,我再次调用了附加HTML事件处理程序的“RegisterEventHandlers”帮助程序方法。链接到的代码jeffamaphone很有帮助。我合并了其“normalPageLoad”成员变量的概念,以有条件地调用RegisterEventHandlers。我还看着the accompanying forum post。不过,我无法理解对父窗口的Loaded事件的重视。我什至没有做那部分工作我的代码。无论如何,我认为HtmlPageEventManager现在可以完全正常使用-敲木头。如果您发现案件仍未履行职责,请给我大喊。