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);
    }
    }
  • 相关阅读:
    C++ primer plus读书笔记——第6章 分支语句和逻辑运算符
    C++ primer plus读书笔记——第7章 函数——C++的编程模块
    C++ primer plus读书笔记——第5章 循环和关系表达式
    C++ primer plus读书笔记——第4章 复合类型
    C++ primer plus读书笔记——第3章 处理数据
    C++ primer plus读书笔记——第2章 开始学习C++
    10款好用到爆的Vim插件,你知道几个?
    程序员最讨厌的100件事,瞬间笑喷了,哈哈~~
    20 个最常用的 Git 命令用法说明及示例
    史上最全的Nginx配置参数中文说明
  • 原文地址:https://www.cnblogs.com/qianlifeng/p/1782350.html
Copyright © 2011-2022 走看看