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

    萌橙 你瞅啥?
  • 相关阅读:
    编译原理-第二章 一个简单的语法指导编译器-2.4 语法制导翻译
    编译原理-第二章 一个简单的语法指导编译器-2.3 语法定义
    编译原理-第二章 一个简单的语法指导编译器-2.2 词法分析
    LeetCode 1347. Minimum Number of Steps to Make Two Strings Anagram
    LeetCode 1348. Tweet Counts Per Frequency
    1349. Maximum Students Taking Exam(DP,状态压缩)
    LeetCode 1345. Jump Game IV(BFS)
    LeetCode 212. Word Search II
    LeetCode 188. Best Time to Buy and Sell Stock IV (动态规划)
    LeetCode 187. Repeated DNA Sequences(位运算,hash)
  • 原文地址:https://www.cnblogs.com/daimaxuejia/p/10641724.html
Copyright © 2011-2022 走看看