0

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

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

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

2 回答 2

2

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

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

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

通过钩住两者,您大部分时间都会获得响应式插件,并且不会错过刷新。然后,您的 javascript 可以包含一个检查以避免运行两次。就像是:

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

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

于 2012-08-06T22:23:10.297 回答
1

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

链接:

  1. MSDN 论坛
  2. 检测 IE 刷新按钮
  3. 刷新和 DISPID_DOCUMENTCOMPLETE
于 2012-08-01T18:14:52.193 回答