判断多Frame网页是否真正加载完毕(CHtmlView)
来源:互联网 发布:c语言接口与实现 豆瓣 编辑:程序博客网 时间:2024/05/17 06:01
1. 手工重载添加两个虚拟函数:
virtualvoidDocumentComplete(LPDISPATCHpDisp,VARIANT*URL);
virtualvoidNavigateComplete2(LPDISPATCHpDisp,VARIANT*URL);
注意:不是以下两个函数
virtualvoid OnDocumentComplete(VARIANT* URL);
virtualvoid OnNavigateComplete2(VARIANT* URL);
-------------------------------------------------------------------------
2. 声明一个成员变量,并在构造函数中进行初始化:
LPDISPATCHm_lpDisp;//用于判断网页加载是否真正完毕
m_lpDisp =NULL;//构造函数中初始化
-------------------------------------------------------------------------
3. 这两个函数的具体实现:(参照微软)
//配合NavigateComplete2,判断网页是否真正加载完毕,用于多Frame网页
voidCXXXXView::DocumentComplete(LPDISPATCHpDisp,VARIANT*URL)
{
if(m_lpDisp &&(m_lpDisp == pDisp))//判断网页是否真正加载完毕,用于多Frame网页
{
//if the LPDISPATCH are same,that means it is the final DocumentComplete
TRACE("Document is done downloading");
AfxMessageBox("下载完毕");
m_lpDisp=NULL;//Reset glpDisp
}
}
//配合DocumentComplete,判断网页是否真正加载完毕,用于多Frame网页
voidCXXXXView::NavigateComplete2(LPDISPATCHpDisp,VARIANT*URL)
{
//Check if glpDisp is NULL.If NULL,that means it is
//the top level NavigateComplete2. Save the LPDISPATCH
if(!m_lpDisp)m_lpDisp=pDisp;
}
-------------------------------------------------------------------------
4. 测试环境:
编程工具: VC6
操作系统: XP SP2
在你的CHtmlView继承类头文件中添加:
public:
void DocumentComplete(LPDISPATCH pDisp, VARIANT* URL);
然后在实现文件中添加:
void CMyHtmlView::DocumentComplete(LPDISPATCH pDisp, VARIANT* URL)
{
// 这里写什么呢?
}
上面函数的实现部分写什么呢?就是前面所说的“判断页面是否加载完成”的代码了。我们从MS的这篇惨不忍睹的机器翻译的文章里(真恨我没找到英文的),还是可以得到一些启发的,我修改了一下,使得代码适合于VC 2005+IE7的环境,如下:
void CMyHtmlView::DocumentComplete(LPDISPATCH pDisp, VARIANT* URL)
{
m_nCount++; // 这是我的一个类成员变量,用于计数
LPDISPATCH lpWBDisp = NULL;
HRESULT hr = NULL;
hr = m_pBrowserApp->QueryInterface(IID_IDispatch, (void**)&lpWBDisp);
ASSERT(SUCCEEDED(hr));
if (pDisp == lpWBDisp)
{
CString strMessage;
strMessage.Format("页面加载完成!/n/n进入DocumentComplete函数的次数:%d", m_nCount);
// Top-level Window object, so document has been loaded
MessageBox(strMessage);
}
lpWBDisp->Release();
}
更新:根据网上的一篇文章得知:页面上的JavaScript脚本更改页面结构时,也有可能会触发加载完成事件,但是上面所说的方法却不适用于此情况。在这种情况下,可以延后一定的时间再处理。
- 判断多Frame网页是否真正加载完毕(CHtmlView)
- 判断多Frame网页是否真正加载完毕(CHtmlView)
- 判断多Frame网页是否真正加载完毕(CHtmlView) .
- 判断多Frame网页是否真正加载完毕(CHtmlView)
- 判断多Frame网页是否真正加载完毕(CHtmlView)
- 判断多Frame网页是否真正加载完毕(CHtmlView)
- VC 判断 多Frame 网页是否加载完毕
- 如何判断一个网页是否加载完毕
- 自己收集整理的关于 判断 网页是否加载完毕的方法(特别是多框架Frame),然后获取网页源码
- C#使用Webbrowser来判断网页是否加载完毕
- VB 判断 WebBrowser是否已经加载网页完毕
- C#使用Webbrowser来判断网页是否加载完毕
- js判断网页是否加载完毕 包括图片
- 判断iframe中的网页是否加载完毕代码
- 判断页面是否加载完毕
- 判断 iframe 是否加载完毕
- 判断图片是否加载完毕
- 判断图片是否加载完毕
- TabActivity重写onKeyDown()方法无响应解决方法
- 动态增加N 个上传控件,实现批量上传
- 等你,执手渡流年(七夕)
- SQL Server系统函数
- 多级缓冲的服务器数据服务机制实现(一)
- 判断多Frame网页是否真正加载完毕(CHtmlView)
- 深入理解JavaScript系列
- 平衡二叉树的 插入 删除 查找 等功能c语言实现 数据结构
- 多级缓冲的服务器数据服务机制实现(二)
- 一个java正规表达式工具类
- 让人爱不释手的13套精美 Web 应用程序图标素材
- Tomcat启动时自动加载Servlet
- xp安装office2007提示找不到officelr.cab
- js变量的作用域测试