zoukankan      html  css  js  c++  java
  • WebBrowser执行脚本和调用外部方法

    控制WebBrowser实际上就是控制IE,最简单的方法就是执行javascript或vbscript,省去了接口的转换。
    如何执行脚本?以前我一直用mshtml中IHTMLWindow2接口的execScript()方法,在Delphi中需要uses MSHTML单元:

    1. uses MSHTML;
    2. procedure TForm1.Button1Click(Sender: TObject);
    3. begin
    4.   (WebBrowser1.Document as IHTMLDocument2).parentWindow.execScript(
    5.     'alert("hello");', 'javascript')
    6. end;

    在CSharp中则需要在工程添加Micrsoft.mshtml,后来得到在地址栏执行脚本的启发。用WebBrowser的Navigate()方法更简单:

    1. procedure TForm1.Button1Click(Sender: TObject);
    2. begin
    3.   WebBrowser1.Navigate('javascript:alert("hello");')
    4. end;

    省去了添加引用的麻烦。

    如何调用外部的方法?先看一段在IE中添加收藏夹的代码:

    1. window.external.AddFavorite(url, title);

    脚本中window.external对象就是一个外部对象,AddFavorite()则是这个外部对象的方法!
    查了一下资料,原来可以通过IDocHostUIHandler接口的GetExternal()方法,指定脚本的外部对象。
    在CSharp中更简单,有WebBrowser.ObjectForScripting属性直接对应window.external,参考如下代码:

      1. [ComVisible(true)] 
      2. public partial class Form1 : Form
      3. {
      4.     public Form1()
      5.     {
      6.         InitializeComponent();
      7.     }
      8.     private void Form1_Load(object sender, EventArgs e)
      9.     {
      10.         webBrowser1.DocumentText = @"
      11.             <html>
      12.                 <input type=""button"" value=""测试"" onclick=""alert('Zswang 路过');"">
      13.             </html>
      14.             ";
      15.     }
      16.     public void alertMessage(string s)
      17.     {
      18.         MessageBox.Show(s, "囧");
      19.     }
      20.     private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
      21.     {
      22.         webBrowser1.Navigate(@"javascript:
      23.             function alert(str)
      24.             {
      25.                 window.external.alertMessage(str);
      26.             }");
      27.         webBrowser1.ObjectForScripting = this;
      28.     }
      29. }

    http://blog.csdn.net/zswang/article/details/3020109

  • 相关阅读:
    Angularjs html文本显示
    .net与.net core学习目录
    数据库学习目录
    WCF学习目录
    sql学习目录
    EF学习目录
    git for Windows
    图谱论(Spectral Graph Theory)基础
    2017机器学习相关会议时间
    数值分析教材统计
  • 原文地址:https://www.cnblogs.com/findumars/p/6347914.html
Copyright © 2011-2022 走看看