【发布时间】:2011-02-16 13:08:44
【问题描述】:
我目前正在为我的公司完成一个 C++ BHO 项目,但我在这个过程中发现了一个非常严重的错误,比我希望的要晚很多。我有一个 BHO,目前使用 SINK 来捕获 BeforeNavigate2、NavigateComplete2、NavigateError 和其他几个事件,但我在捕获 302 重定向 URL 时遇到了问题。
例如,假设我们有 4 个站点:
具有指向 B 的链接的起始站点 A 302 重定向到站点 C 的站点 B 302 重定向到站点 D 的站点 C, 最终站点 D
用户从站点 A 开始:点击站点 B:站点 B 重定向到站点 C,站点 C 重定向到站点 D:用户在站点 D 结束。
在这种情况下,我的 BeforeNavigate2 将捕获站点 B 的 URL,而我的 NavigateComplete 将捕获站点 D 的 URL。但是站点 C 对我的 BHO 来说是完全不可见的。在这种情况下,您可以在 B 和 D 之间添加任意数量的 302,但我无法捕获其中任何一个。
注意:我在 Internet Explorer 7 中通过将 DOCHOSTUIFLAG_ENABLE_REDIRECT_NOTIFICATION 添加到 GetHostInfo 标志来解决此问题,这使得每个重定向都触发 BeforeNavigate2。但似乎 IE8 不尊重这个标志:(
【问题讨论】:
标签: c++ com internet-explorer-8 bho