• 2015.2.16 关于delphi web控件打开新网页时弹出关闭页面(js代码)出错的解决办法研究


    参考网址1:http://www.csharpwin.com/csharpspace/2360.shtml
    ...参考网址2:http://www.oschina.net/question/234345_53939
    网址1、2都是c语言中对于web控件的解决办法,对于两者我都只是借鉴了一下方法,最终都只是对网页中js代码中的widow.open和window.close进行处理。

    大概有两种方法:
    一种对js代码进行替换,换成web控件可执行不出错的程序,
    另一种是对于web控件在执行js代码widow.open后,进行事件判定....

    下面最终我采用第二种方法对其进行解决,但是我这里只对window.open进行处理,并没有对window.close进行处理,后面如果有机会会对程序进行进一步的完善....

    最终参考网址:http://www.360doc.com/content/12/1109/11/7389824_246775000.shtml

    解决办法的程序:
    procedure TForm1.WebBrowserNewWindow2(Sender: TObject;

      var ppDisp: IDispatch; var Cancel: WordBool);
    begin
      WebBrowser.RegisterAsBrowser := true;//当前浏览器为最高级别浏览器
      ppDisp := WebBrowser.ControlInterface;//新窗口对象允许web浏览器操作
    end;

    程序说明:
    首先选建立一个web控件,然后使用web控件的onnewwindow事件,再将web控件的RegisterAsBrowser 属性设为真,使得事件的ppDisp参数等于web控件ControlInterface属性。
    onnewwindow事件是响应一个导航到新网址或一个脚本的window.open方法;

    ppDisp为程序创建新窗口的对象;

    RegisterAsBrowser属性
    设置该属性为True时,当前使用的Web浏览器组件成为最高级别浏览器。
    语法:
    property RegisterAsBrowser: WordBool;
     
    ControlInterface属性
    访问WebBrowser组件接口,这个接口允许一个Automation控制器访问Web浏览器的属性、方法和事件。
    语法:
    property ControlInterface: IWebBrowser2;
    示例:
    显示WebBrowser1组件的名称,代码如下:
    Showmessage(WebBrowser1.ControlInterface.Name); 
     
    qq:673890989欢迎遇到同样问题的伙伴们交流
  • 相关阅读:
    手机号码为字母或者符号(回退)
    总结:Python的赋值、深拷贝、浅拷贝有什么区别
    Python安装Mysqlclient的坑
    MySQL数据库安装和Navicat for MySQL配合使用
    chrome打开开发者工具之后看不到请求头信息——F12的使用(一)
    常见dos命令汇总
    如何编写高质量的简历-学习笔记
    windows环境搭建禅道项目管理工具
    Web接口测试工具--Jmeter
    不要把测试工具当饭吃
  • 原文地址:https://www.cnblogs.com/CQ-LQJ/p/5165329.html
Copyright © 2020-2023  润新知