用CHtmlView导入一个HTML文件后,应该如何清干净里面的脚本,包括SCRIPT标签内的和各种事件响应? 用IHTMLElementCollection遍历标签的方法,只能去除标签内的内容,各种事件响应无法去除,请问有什么更好的方法? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 标签删掉,它的事件就清掉了。可以用IHTMLElement::put_outerHTML(L"") 或者 IHTMLDOMNode::removeChild 来删除标签 不知为什么,如果从IHTMLELEMENTCOLLECTION获取IHTMLELEMENT,就不能遍历所有的标签,经过的标签可以清除得很干净,但总有些标签没有遍历到,而用IHTMLELEMENTCOLLECTION获取的IHTMLScriptElement却可以遍历所有脚本标签,LS大哥知道是怎么回事吗? 干嘛清除呢? 如果你是想禁止JS的话 直接禁止JS就是的啦 我这样遍历:<IHTMLDocument2> pDoc;<IHTMLElementCollection> pCollect;pDoc->get_all(&pCollect);pCollect->get_length(&lNum);for (int i = 0; i < lNum; i++){ CComPtr<IDispatch> pDis; CComPtr<IHTMLElement> pElem; pCollect->item(varName, varIndex, &pDis); if (NULL == pDis) { continue; } pDis->QueryInterface(IID_IHTMLElement, (void**)&pElem); pElem->get_tagName(&bsTag); CString szTag = bsTag if (0 == szTag.CompareNoCase("SCRIPT") { pElem->put_outerHTML(L""); }}会遇到,当i = 2的时候,pElem却指向第三个脚本元素,于是在i = 3的时候,会进入continue,结果第二个脚本元素就保留在网页中了,而先用pCollect->tags()获取script的IHTMLElementCollection,然后获取IHTMLScriptElement却不会出现这种情况。 qq登录的问题 关于课程设计(继续帮助) 进来有分,一个关于字体的问题!!!! 请教关于如何往CComboBoxEx 中加载位图序列的问题?急等 windows任务调度周期设置问题 帮帮忙! 基于对话框的菜单问题 去哪里下载最新的Platform SDK? 请问:CButton m_button 和 CButton *m_but=new CButton 有区别吗? 如何限制程序窗口能被缩小的尺寸? 设置鼠标双击间隔时间问题 浮点数据无损压缩
可以用IHTMLElement::put_outerHTML(L"") 或者 IHTMLDOMNode::removeChild 来删除标签
<IHTMLDocument2> pDoc;
<IHTMLElementCollection> pCollect;pDoc->get_all(&pCollect);
pCollect->get_length(&lNum);
for (int i = 0; i < lNum; i++)
{
CComPtr<IDispatch> pDis;
CComPtr<IHTMLElement> pElem; pCollect->item(varName, varIndex, &pDis); if (NULL == pDis)
{
continue;
} pDis->QueryInterface(IID_IHTMLElement, (void**)&pElem);
pElem->get_tagName(&bsTag); CString szTag = bsTag if (0 == szTag.CompareNoCase("SCRIPT")
{
pElem->put_outerHTML(L"");
}
}会遇到,当i = 2的时候,pElem却指向第三个脚本元素,于是在i = 3的时候,会进入continue,结果第二个脚本元素就保留在网页中了,而先用pCollect->tags()获取script的IHTMLElementCollection,然后获取IHTMLScriptElement却不会出现这种情况。