这个例子只是简单的隐藏了id为head的标签。目的是在显示网页前修改代码,这样显示效果会比在OnDocumentComplete中修改好很多,在OnDocumentComplete中网页内容已经显示出来了,在做其他修改会造成窗口闪烁的问题。
之前尝试使用GetElement方法获取对象并修改样式失败,因为在OnDocumentComplete之前的其他函数中调用GetElement都会失败,原因好像是对象未初始化,现在貌似只能用修改源码的方式实现了。
void CTestHtmlDlg::OnNavigateComplete(LPDISPATCH pDisp, LPCTSTR szUrl)
{
CDHtmlDialog::OnNavigateComplete(pDisp, szUrl);
// TODO: 在此添加专用代码和/或调用基类
IHTMLDocument2 * pHtmlDoc = (IHTMLDocument2*)m_spHtmlDoc;
CComPtr<IHTMLDocument3> pDocument3 = NULL;
pHtmlDoc->QueryInterface(IID_IHTMLDocument3,(void**)&pDocument3);
CComPtr<IHTMLElement> tagElement;
pDocument3->get_documentElement(&tagElement);
CComBSTR bstr;
tagElement->get_innerHTML(&bstr);
CString str = bstr;
//隐藏指定ID
str.Replace(_T("#head{"), _T("#head{display:none;"));
tagElement->put_innerHTML(CComBSTR(str));
}