描述:
建一个mfc单文档程序,基类选择CHtmlView 修改(添加)代码如下
#include "atlbase.h"
void CaaView::OnInitialUpdate()
{
CHtmlView::OnInitialUpdate();
Navigate2(_T("http://localhost/a.htm"),NULL,NULL);
}
void CaaView::OnNavigateComplete2(LPCTSTR strURL)
{
CHtmlView::OnNavigateComplete2(strURL);
CComQIPtr<IHTMLDocument2> pDoc = GetHtmlDocument();
CComPtr<IHTMLElement> pElem;
pDoc->get_body(&pElem);
CComQIPtr<IHTMLBodyElement> pBody = pElem;
CComPtr<IHTMLElementCollection> pElemCol;
pDoc->get_all(&pElemCol);
long len;
pElemCol->get_length(&len);
for(int i = 0; i < len; i++){
CComVariant v(i), v2(1);
CComPtr<IDispatch> pDispatch;
pElemCol->item(v, v2, &pDispatch);
CComQIPtr<IHTMLElement> pElem = pDispatch;
CComBSTR s;
pElem->get_tagName(&s);
TRACE(s);
TRACE("\n");
}
}
以上代码主要想得到测试页面中所有的tag名
http://localhost/a.htm 如下
<HTML>
<HEAD>
<TITLE>Page Title</TITLE>
</HEAD>
<SCRIPT LANGUAGE="JavaScript">
function Loaded()
{
var c = document.all.length;
var i;
for(i = 0; i < c; i++)
{
spanTAGS.innerHTML = spanTAGS.innerHTML +
document.all.item(i).tagName + "<BR>";
}
}
</SCRIPT>
<BODY />
<SPAN id="spanTAGS"></SPAN>
</BODY>
</HTML>
用debug模式运行程序,得到的输出如下
HTML
HEAD
TITLE
SCRIPT
程序找不到SCRIPT以后的body span标记 pElem的值为NULL
请问如何修改代码才能得到body标记,
也就是写一段与Loaded函数功能相近的vc代码
解决方案1:
pDoc->get_body(&pElem);