這個例子只是簡單的隱藏了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));
}