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.初始化WebBrowser的Url与ObjectForScripting两个属性。

    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;

    5.C#调用JavaScript方法

    通过WebBrowser类的Document属性中的InvokeScript方法调用当前网页的Javascript方法。如:
     
    // 调用JavaScript的messageBox方法,并传入参数
    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);
    }
    }
  • 相关阅读:
    中断
    按键
    uart stdio的移植1
    串口通信实战
    串口通信相关知识详解
    SOC时钟
    arm-linux-ld: cannot find sdram_init.o
    SDRAM初始化
    代码重定位实战
    s5pv210的启动过程
  • 原文地址:https://www.cnblogs.com/xvqm00/p/1417969.html
Copyright © 2011-2022 走看看