.net - 监听来自 BHO 的 HTML 事件

标签 .net internet-explorer dom interop bho

我一直在研究用 C# 编写的 BHO/工具栏,它监听浏览器当前网页上引发的 HTML 事件。该解决方案包括一个名为 HtmlPageEventManager 的可重用类,其目的是为每个打开的新网页订阅给定的 HTML 事件列表。目标是在用户可以开始与页面元素交互时立即附加处理程序,甚至在页面加载完成之前。使用这个类很简单——只需调用构造函数:

var evts = 新列表(){
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 有多受欢迎?有什么更好的工具可以使用吗?

最佳答案

是的!我通过订阅 BHO 的 DownloadComplete 事件克服了“刷新”问题,在那里我再次调用附加 HTML 事件处理程序的“RegisterEventHandlers”辅助方法。链接到的代码 jeffamaphone 很有帮助。我结合了“normalPageLoad”成员变量的想法来有条件地调用 RegisterEventHandlers。我也看了the accompanying forum post .不过,我无法理解对父窗口的 Loaded 事件的强调。我什至没有做那部分就让我的代码工作。无论如何,我认为 HtmlPageEventManager 现在功能齐全——敲木头。如果你发现它仍然没有完成它的工作,请给我一个呼喊。

关于.net - 监听来自 BHO 的 HTML 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1415364/

相关文章:

c# - 从 fieldinfo 获取通用值会引发异常 : "Late bounds operation cannot be performed..."

java - Set-Cookie header 不在 Internet Explorer 中设置 cookie

html - IE10+ 选择元素选项列表未解释为父元素的子元素

javascript - 如何使用 JavaScript 访问 CSS 生成的内容

c# - 如何在 C# 中交换数组的两个值?

c# - 拥有静态 IReadOnlyDictionary 字段是否线程安全?

c# - 无法解析 System.Web.Extensions 程序集

c# - 使用 C# 将 Internet Explorer 浏览器嵌入到 Winforms

javascript - 在什么情况下会调用 Parse HTML 事件?

javascript - 通过 JavaScript 动态设置的 Iframe src 在 Internet Explorer 上执行了两次