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

    }

  • 相关阅读:
    GoldenGate 19.1实时文本文件加载攻略
    windows 10 excel 打开超连接提示 组织策略阻止...
    验证ogg同步数据库表无主键表且目标表包含隐藏字段
    配置ogg从Oracle到PostgreSQL的同步复制json数据
    pi
    GoldenGate 19.1 发布
    ogg同步DDL时,源和目标端表空间名称不同的解决思路
    总目录索引(开发精华总结)
    Spring Cloud Nacos分布式配置中心
    Spring Cloud Nacos&Feign负载均衡
  • 原文地址:https://www.cnblogs.com/zhaobl/p/2031382.html
Copyright © 2011-2022 走看看