【问题标题】:How to detect image loading in Internet Explorer (and don't display it)?如何检测 Internet Explorer 中的图像加载(并且不显示)?
【发布时间】:2011-01-12 08:04:19
【问题描述】:

我正在为 Internet Explorer(8 和 9)编写 BHO 插件。我按照this 教程解释了如何编写隐藏页面上所有图像的附加组件。 问题是这些图像在页面下载后被隐藏了。所以一秒钟有整页,然后所有图像都消失了。 我必须保证,当用户打开页面时,即使一秒钟也不会出现任何图像。

我在 DWebBrowserEvents2 中找不到合适的事件。也许我应该查看 IHTMLDocument2。其实我也不知道。

有什么建议吗?

【问题讨论】:

  • 你试过这个:DISPID_DOWNLOADBEGIN 吗?
  • 是的,我试过了。这个没有给我任何东西。我不知道它是什么时候触发的,当你想查看新站点时,通常有两个 DownloadBegin 事件。
  • 您知道 Internet Explorer 已经可以关闭图像吗? (工具 -> Internet 选项 -> 高级 -> 显示图片)
  • 我不是每天都使用 IE ;) 我正在编写用于阻止广告的插件,例如 Firefox 上的 Adblock。

标签: c++ image internet-explorer bho


【解决方案1】:

您无法使用 IE 正确执行此操作。 DWebBrowserEvents 事件触发得太晚,您无法在下载图像之前修改 DOM。

您会看到 cmets 向您介绍 Async Pluggable Protocol,这是一种在较低级别连接到 IE 的方法,但它相当棘手,Microsoft 不建议为 http/https 执行此操作。查看MSDN IE Extension Developer forum 了解更多关于此的讨论。

【讨论】:

  • 我读过“异步可插拔协议”。但我认为我只能编写自定义协议处理程序,如 herehere 所述。我认为我不能为 HTTP 编写它,因为人们正在尝试为我想要实现的目标编写一些技巧(link)。你认为尝试为 HTTP 编写异步可插拔协议是我需要的吗?
  • 我接受了你的回答。我最终会尝试这种“异步可插拔协议”方法。似乎这是在下载任何内容之前进行过滤的唯一方法(低级 API 挂钩除外)。你有关于用HTTP协议做APP的资源吗?
  • 我读过的最好的帖子是 groups.google.com/group/… 并搜索 Igor 的其他各种帖子,他似乎是世界上唯一知道如何做这些事情的人。
  • 您是否使用了来自 Google Gears 的 Igor 的 PassthruAPP?还是实现了自己的HTTP APP?你最后做了什么?我读了this 线程,想知道我是否应该尝试使用 PassthruAPP。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-20
  • 1970-01-01
  • 2015-05-19
  • 2021-04-13
  • 2011-06-30
  • 1970-01-01
  • 2011-08-09
相关资源
最近更新 更多