在BHO中为IE9刷新(F5)eventHandler

时间:2012-05-07 07:47:52

标签: c# internet-explorer-9 bho

单击F5键(刷新)时,哪个事件在Internet Explorer(IE9)中升级?如何在我的BHO中使用Handler来捕获它?

注意: 我在C#中为IE9创建了一个BHO。我的类扩展了IObjectWithSite,允许我通过SetSite函数添加处理程序。

public int SetSite(object site)
 {
   webBrowser = (SHDocVw.WebBrowser)site; 
   //events here...
 }

2 个答案:

答案 0 :(得分:2)

如果您正在开发一个注入Javascript的浏览器插件,我发现连接ondocumentcomplete和ondownloadcomplete很有用。

  • 如果DOM已经加载并且可以被操作,Ondocumentcomplete会立即触发,但是它会错过刷新。

  • Ondownloadcomplete等待所有资源(例如图像)下载,但会抓取刷新。这种延迟可能很长。

通过连接两者,您可以在大多数时间获得响应式插件,并且不会错过刷新。然后,您的javascript可以包含检查以避免运行两次。类似的东西:

// Inject the code, but only once
if (typeof myplugin == 'undefined') {
    myplugin = new function () {
        // Your code runs here.
    };
}

我发现以下页面提供了丰富的信息:

答案 1 :(得分:1)

没有直接的方法,很难在不同版本的IE中实现。虽然您可以使用某些事件的组合来实现这一点。请注意以下方法并非万无一失。

<强>链接:

  1. MSDN Forum
  2. Detecting the IE Refresh button
  3. Refresh and DISPID_DOCUMENTCOMPLETE