CDHtmlDialog 顯示網頁前修改網頁源碼的方法

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章