• Delphi TWebBrowser[10] 防止弹出新窗口的几个方法


    Delphi TWebBrowser[10] 防止弹出新窗口的几个方法

    1、方法1

    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:(使用分析:部分网页吗,使用了定时器,每过一段时间刷新一下网页)

    //原理:用其他页面先加载,然后跳转到主页面
    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 希望内容对你所有帮助,谢谢!
  • 相关阅读:
    11.2---字符串数组排序,删除变位词(CC150)
    9.10---堆箱子问题(CC150)
    9.9---n皇后问题(CC150)
    11.1---有序数组合并(CC150)
    9.8---硬币问题(CC150)
    7.7---找只含3,5,7的数(CC150)
    17.1---编写一个函数交换两个变量的值(CC150)
    7.6--找过点最多的直线(CC150)
    7.5---两个正方形分成对半的直线(CC150)
    9.5---括号是否有效(CC150)
  • 原文地址:https://www.cnblogs.com/guorongtao/p/14022979.html
Copyright © 2020-2023  润新知