zoukankan      html  css  js  c++  java
  • 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欢迎遇到同样问题的伙伴们交流
  • 相关阅读:
    Alpha 冲刺 (8/10)
    Alpha 冲刺 (7/10)
    Alpha 冲刺 (6/10)
    团 队 作 业 ———— 随 堂 小 测
    Alpha 冲刺 (5/10)
    Alpha 冲刺 (4/10)
    Beta冲刺博客汇总(麻瓜制造者)
    Beta冲刺(3/5)(麻瓜制造者)
    快速搭建一个Express工程骨架
    个人作业——软件产品案例分析
  • 原文地址:https://www.cnblogs.com/CQ-LQJ/p/5165329.html
Copyright © 2011-2022 走看看