zoukankan      html  css  js  c++  java
  • JavaScript与C# Windows应用程序交互

    一、建立网页

    <html>
    <head>
           
    <meta http-equiv="Content-Language" content="zh-cn">
           
    <script language="javascript" type="text/javascript">
                  
    <!-- 提供给C#程序调用的方法 -->
                  
    function messageBox(message)
                  
    {
                        alert(message);
                 }

           
    </script>
    </head>

    <body>
           
    <!-- 调用C#方法 -->
           
    <button onclick="window.external.MyMessageBox('javascript访问C#代码')" >
           javascript访问C#代码
    </button>
    </body>
    </html>


    二、建立Windows应用程序

    1.       创建Windows应用程序项目

    2.       Form1窗体中添加WebBrowser控件

    3.       Form1类的上方添加

    [System.Runtime.InteropServices.ComVisibleAttribute(true)]

    这是为了将该类设置为com可访问。如果不进行该声明将会出错。出错信息如下图所示:

    如:

    [System.Runtime.InteropServices.ComVisibleAttribute(true)]

    public partial class Form1 : Form

    4.初始化WebBrowserUrlObjectForScripting两个属性。

    Url属性:WebBrowser控件显示的网页路径

    ObjectForScripting属性:该对象可由显示在WebBrowser控件中的网页所包含的脚本代码访问。

    Url属性设置为需要进行操作的页的URL路径。

    JavaScript通过window.external调用C#公开的方法。即由ObjectForScripting属性设置的类的实例中所包含的公共方法。具体设置例子如下:

    System.IO.FileInfo file = new System.IO.FileInfo("index.htm");

    // WebBrowser控件显示的网页路径

    webBrowser1.Url = new Uri(file.FullName);

    // 将当前类设置为可由脚本访问

    webBrowser1.ObjectForScripting = this;

    5C#调用JavaScript方法

    通过WebBrowser类的Document属性中的InvokeScript方法调用当前网页的Javascript方法。如:

    // 调用JavaScriptmessageBox方法,并传入参数

    object[] objects = new object[1];

    objects[0] = "C#访问JavaScript脚本";

    webBrowser1.Document.InvokeScript("messageBox", objects);

    完整代码如下:

    [System.Runtime.InteropServices.ComVisibleAttribute(true)]

    public partial class Form1 : Form

    {

        
    public Form1()

        
    {

            InitializeComponent();

            System.IO.FileInfo file 
    = new System.IO.FileInfo("index.htm");

            
    // WebBrowser控件显示的网页路径

            webBrowser1.Url 
    = new Uri(file.FullName);

            
    // 将当前类设置为可由脚本访问

            webBrowser1.ObjectForScripting 
    = this;

        }


     

        
    private void button1_Click(object sender, EventArgs e)

         
    {

            
    // 调用JavaScript的messageBox方法,并传入参数

            
    object[] objects = new object[1];

            objects[
    0= "C#访问JavaScript脚本";

            webBrowser1.Document.InvokeScript(
    "messageBox", objects);

        }


        
    // 提供给JavaScript调用的方法

        
    public void MyMessageBox(string message)

        
    {

            MessageBox.Show(message);
        }

    }

  • 相关阅读:
    Recommended Books for Algo Trading in 2020
    Market Making is simpler than you think!
    Top Crypto Market Makers of 2020
    Top Crypto Market Makers, Rated and Reviewed
    爬取伯乐在线文章(五)itemloader
    爬取伯乐在线文章(四)将爬取结果保存到MySQL
    爬取伯乐在线文章(三)爬取所有页面的文章
    爬取伯乐在线文章(二)通过xpath提取源文件中需要的内容
    爬取伯乐在线文章(一)
    爬虫去重策略
  • 原文地址:https://www.cnblogs.com/zhaobl/p/2031382.html
Copyright © 2011-2022 走看看