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

    萌橙 你瞅啥?
  • 相关阅读:
    linux 内核升级4.19
    监管对保险页面的要求
    软件测试-测试可交付成果
    软件测试架构思想
    dockerfile
    转载:.NET Core 图片操作在 Linux/Docker 下的坑
    docker build速度过慢问题
    .net 5 发布到 docker 或 docker 镜像方法
    Centos 安装 docker 教程
    DQL、DML、DDL、DCL全名是啥?
  • 原文地址:https://www.cnblogs.com/daimaxuejia/p/10641724.html
Copyright © 2011-2022 走看看