JavaScript与C# Windows应用程序交互(webBrowser方法)

46 篇文章 0 订阅
一、 建立网页
< 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);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值