Delphi TWebBrowser[10] 防止弹出新窗口的几个方法
Delphi TWebBrowser[10] 防止弹出新窗口的几个方法
1、方法1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | uses MsHTML; WebBrowser1 . Silent:= True ; //可以防止弹出“语法错误”的窗口。 procedure TForm1 . WebBrowser1NewWindow2(ASender: TObject; var ppDisp: IDispatch; var Cancel: WordBool); begin Cancel := True ; //可以阻止<a href='url' target='_blank'>方式的新窗口 end ; procedure TForm1 . WebBrowser1NavigateComplete2(ASender: TObject; //阻止Javascript脚本弹出的新窗口 const pDisp: IDispatch; var URL: OleVariant); begin ((aSender as TWebBrowser).Document as IHTMLDocument2).parentWindow . execScript( 'window.open=function(){return true}' , 'JavaScript' ); //禁止使用open方式弹出的窗口 ((aSender as TWebBrowser).Document as IHTMLDocument2).parentWindow . execScript( 'window.alert=function(){return true}' , 'JavaScript' ); //禁止使用alert方式弹出的对话框 ((aSender as TWebBrowser).Document as IHTMLDocument2).parentWindow . execScript( 'window.showModalDialog=function(){return true}' , 'JavaScript' ); //禁止使用showModalDialog方式弹出的窗口 ((aSender as TWebBrowser).Document as IHTMLDocument2).parentWindow . execScript( 'window.showModelessDialog=function(){return true}' , 'JavaScript' ); //禁止使用showModelessDialog方式弹出的对话框 end ; |
方法2:(使用分析:部分网页吗,使用了定时器,每过一段时间刷新一下网页)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | //原理:用其他页面先加载,然后跳转到主页面 procedure TForm1 . FormCreate(Sender: TObject); begin WebBrowser2 . Navigate( 'about:blank' ); //最好在创建时候要先执行一次初始化,以免错误 ,可以将WebBrowser2先隐藏 end ; procedure TForm1 . WebBrowser1NewWindow2(ASender: TObject; var ppDisp: IDispatch; //响应主浏览器的OnNewWindow2事件 var Cancel: WordBool); begin ppDisp := WebBrowser2 . Application; //将弹出的网页放到WebBrowser2中去加载 Cancel := False ; //先不拦截弹窗 end ; procedure TForm1 . WbNoAdBeforeNavigate2(ASender: TObject; const pDisp: IDispatch; //响应WbNoAd的OnBeforeNavigate2事件 var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool); begin if URL <> 'about:blank' then Cancel := True ; //窗口弹到这里来拦截, end ; |
创建时间:2020.11.23 更新时间:
博客园 滔Roy https://www.cnblogs.com/guorongtao 希望内容对你有所帮助,谢谢!
分类:
Delphi Web
标签:
Delphi
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报