C#通过webbrowser控件与javascript交互

1.C#里调用控件里面网页的js函数
    //调用JavaScript的messageBox方法,并传入参数
    object[] objects = new object[1];
    objects[0] = “C#访问JavaScript脚本";
    this.webBrowser1.Document.InvokeScript(“messageBox", objects);//object就是传入的参数,而messageBox则是网页中预定义好的js函数。
通过这种方式C#里面就可以执行Javascript函数,可以把上面的代码放到一个button的click事件里面。

2.webbrowser控件里网页js调用C#窗体的函数
首先需要在代码里面加上
[System.Runtime.InteropServices.ComVisibleAttribute(true)] 
    public partial class Form1 : Form{
         …..//
    }
这样使得C#的com对象是对网页里的javascript可见的。
然后在嵌入网页里面通过“window.external.MyMessageBox(‘javascript访问C#代码’)" ,即通过window.external捕获调用c#定义好的函数。

具体Form.cs代码如下(通过vs创建的c#window窗体应用,拖拽上一个webbrowser控件和button控件。):
		[System.Runtime.InteropServices.ComVisibleAttribute(true)]
        public partial class Form1 : Form
        {
            public Form1()
            {
                 InitializeComponent();
                 System.IO.FileInfo file = new System.IO.FileInfo("test.html");                
                 this.webBrowser1.Url = new Uri(file.FullName); // WebBrowser控件显示的网页路径                
                 this.webBrowser1.ObjectForScripting =this;// 将当前类设置为可由脚本访问
             } 


			//提供给JavaScript调用的方法
            public void MyMessageBox(string message)
            {
                MessageBox.Show(message);
            } 


			private void button1_Click_1(object sender, EventArgs e)
            {
                //调用JavaScript的messageBox方法,并传入参数
				object[] objects = new object[1];
				objects[0] = “C#访问JavaScript脚本";
				this.webBrowser1.Document.InvokeScript("messageBox", objects);
			}
		}


test.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 οnclick="window.external.MyMessageBox('javascript访问C#代码')" >javascript访问C#代码</button>
</body>
</html>


配置运行成功的话,可以看到相互调用的效果

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值