刷新 (F5) 事件处理程序在 BHO for IE9

本文关键字:BHO for IE9 程序 事件处理 F5 刷新 | 更新日期: 2023-09-27 18:33:33

单击 F5 键(刷新)时,Internet Explorer (IE9) 中会引发哪个事件?我怎样才能在我的 BHO 中使用处理程序来捕获它?

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

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

刷新 (F5) 事件处理程序在 BHO for IE9

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

  • 一旦加载了 DOM 并且可以进行操作,Ondocumentcomplete 就会触发,但它会错过刷新。

  • Ondownloadcomplete 会等到所有资源(例如图像)都下载完毕,但会捕获刷新。这种延迟可能相当长。

通过钩住两者,您可以在大多数时间获得响应式插件,并且不会错过刷新。然后,您的 JavaScript 可以包含一个检查以避免运行两次。像这样:

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

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

  • 在 BHO 中检测刷新的替代方法

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

链接:

  1. MSDN 论坛
  2. 检测"IE 刷新"按钮
  3. 刷新和DISPID_DOCUMENTCOMPLETE