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

    转自http://www.cnblogs.com/xds/archive/2007/03/02/661838.html

    一、建立网页


    代码
    <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);
    }
    }
  • 相关阅读:
    CodePlus#4 最短路
    最大子矩阵问题———悬线法
    Luogu P3393 逃离僵尸岛
    SCOI2011 糖果
    关于页面的跳转添加参数(比如id啥的)
    npm 常用命令
    移动开发中的一些基本的思想,和需要注意的细节技巧之处
    Mock模拟后台数据接口--再也不用等后端的API啦
    普及知识
    移动端JD首页H5页面
  • 原文地址:https://www.cnblogs.com/qianlifeng/p/1782350.html
Copyright © 2011-2022 走看看