描述:
因为很多bho能够阻止网页弹出新窗口,
现在好多网站用window.showModelessDialog 来弹出网页.
如何阻止这些对话框啊?
另外如何阻止alert();啊?
解决方案1:
icelight(给我一个接口,我能驱动地球……………仪)
和蒋晟讨论:)
与其HOOK IE或进程创建, 不如HOOK SOCKET? 做成半个防火墙一样的东东, 把HTTP数据过滤掉"window.showModelessDialog"(当然要判断是否处于HTML中的JS代码里面),兼容于所有BROSWER
-----------------------------------------------------------------
网页里调用window.showModelessDialog 的方法是千奇百怪的,如果用正则过滤掉探出欻功能口的语句,可能会造成 客户端脚本出错,不是很好.
关闭http://www.3966.com/index/中其他窗口的script。
mytestopen=window.open;
window.open=myopen;
window.document. />
function mynull(){}
window.document.all.setHomePage = myfunNull;
function myfunNull(p1,p2,p3,p4){}
function myopen(p1, p2, p3, p4)
{
if(p2 == null)
{
mytestopen(p1,p2, p3, p4);
return true;
}
if(p2=="3966")
return true;
mytestopen(p1,p2,p3, p4);
return true;
}
这样,就把那个弹出设HomePage窗口给关闭了。
搞定。公开一下。用重定向功能。
在DISPID_NAVIGATECOMPLETE2中处理。
IHTMLWindow2 * pw;
pDoc->get_parentWindow(&pw);
CComBSTR bs1(L"window.showModelessDialog = myopen;function myopen(url, p1, p2){}");
CComBSTR bs2 (L"JScript");
VARIANT v; VariantInit(&v);
pw->execScript(bs1, bs2, &v);
VariantClear(&v);
::SysFreeString(bs2);
::SysFreeString(bs1);
pw->Release();
同样,禁止alert函数
window.alert=myalert; function myalert(u1){}
您可能想查找下面的文章:
- 基于ATL的应用(BHO中如何使用MFC的类CString,CFileDialog等)?
- 高分求教:BHO技术拦截Flash,但写入的js代码无效!
- 关于BHO拦截按键的问题
- 想BHO只加载ie,不加载我的电脑,但出错atlbaseh中5668行,ATLASSERTpM->m_hInst!=NULL;
- VC++开发BHO插件—定制你的浏览器
- BHO的问题
- 在一个ie(BHO,band)插件中如何控制ie的弹出窗口的。
- 什么工具可以反编译一个DLL,这个dll是bho
- BHO中DIID_HTMLElementEvents2在哪个头文件中定义?
- 在BHO中的DISPID_DOCUMENTCOMPLETE事件中取不到IHTMLDocument2的属性