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);
        }

    }

  • 相关阅读:
    UVa 1451 Average (斜率优化)
    POJ 1160 Post Office (四边形不等式优化DP)
    HDU 3507 Print Article (斜率DP)
    LightOJ 1427 Substring Frequency (II) (AC自动机)
    UVa 10245 The Closest Pair Problem (分治)
    POJ 1741 Tree (树分治)
    HDU 3487 Play with Chain (Splay)
    POJ 2828 Buy Tickets (线段树)
    HDU 3723 Delta Wave (高精度+calelan数)
    UVa 1625 Color Length (DP)
  • 原文地址:https://www.cnblogs.com/zhaobl/p/2031382.html
Copyright © 2011-2022 走看看