首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找到整个文档的DocumentComplete和BeforeNavigate2事件?

如何找到整个文档的DocumentComplete和BeforeNavigate2事件?
EN

Stack Overflow用户
提问于 2014-02-12 10:08:34
回答 1查看 2.9K关注 0票数 2

我正在学习用c#编写一个BHO,我已经为DocumentComplete和BeforeNavigate2编写了事件处理程序。在调试期间,我注意到某些网页(如yahoo.co.in )被多次触发。

我知道这可能是因为页面中存在多个帧。我的问题是:-

  1. 如何知道正在加载的完整页面的事件是哪个?
  2. 我如何知道,当我们要从页面导航时,哪个事件会被触发?

添加一些示例代码

代码语言:javascript
复制
private InternetExplorer iExplorer;
int IObjectWithSite.SetSite(object pUnkSite)
{
    if (pUnkSite != null)
    {
        ieInstance = (InternetExplorer)pUnkSite;
        // Register the DocumentComplete event.
        ieInstance.DocumentComplete += new DWebBrowserEvents2_DocumentCompleteEventHandler(ieInstance_DocumentComplete);
        ieInstance.BeforeNavigate2 += new DWebBrowserEvents2_BeforeNavigate2EventHandler(ieInstance_BeforeNavigate2);
    }
    return 0;
}

private void ieInstance_BeforeNavigate2(object pDisp, ref object URL, ref object Flags, ref object TargetFrameName, ref object PostData, ref object Headers, ref bool Cancel)
{
}

private void ieInstance_DocumentComplete(object pDisp, ref object URL)
{
}
EN

回答 1

Stack Overflow用户

发布于 2014-02-12 10:59:16

使用BeforeNavigate2DocumentComplete事件处理程序的DocumentComplete参数,它引用与框架(或顶部浏览器)对应的SHDocVw.WebBrowser对象的实例:

代码语言:javascript
复制
static bool IsTop(object pDisp)
{
    var thisBrowser = pDisp as SHDocVw.WebBrowser;
    var parent = thisBrowser .Parent as SHDocVw.WebBrowser;
    return (parent == thisBrowser || parent == null);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21724700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档