我一直在研究用C#编写的BHO /工具栏,用于监听浏览器当前网页上引发的HTML事件。该解决方案包括一个名为HtmlPageEventManager的可重用类,其目的是为每个打开的新网页订阅给定的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 );

在此下载我的解决方案尝试一下并向我发送反馈。如果您发现它有用,请随意在自己的项目中使用它。虽然它运作良好,但有时它无法附加事件。我很难确定这些情况。所以我可以在HtmlPageEventManager上使用一些改进的帮助。

我的解决方案引用了 SpicIE 的程序集,但它们未包含在上面的下载中,所以你需要从 Spicie网站获取它。顺便问一下,这可能是个好时机:SpicIE有多受欢迎?有没有更好的工具?

有帮助吗?

解决方案

呀!我克服了“刷新”的局面。通过订阅BHO的DownloadComplete事件来解决问题,在那里我再次调用我的“RegisterEventHandlers”。附加HTML事件处理程序的辅助方法。链接的代码jeffamaphone很有帮助。我结合了“normalPageLoad”的概念。成员变量有条件地调用RegisterEventHandlers。我还查看了随附论坛帖子。但是,我无法理解对父窗口的Loaded事件的强调。我的代码工作没有做到这一点。无论如何,我认为HtmlPageEventManager现在功能齐全 - 敲木头。如果你找到一个仍然无法正常工作的案例,请给我一个大喊。

其他提示

您会发现在页面加载期间没有100%的解决方案可以为IE执行此操作。这不是你的错:IE的事件模型是一个巨大的意大利面条大量的异步代码,这使得很难做到正确。如果你有一个95%的解决方案,我说要开心并继续前进。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top