博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#通过webbrowser控件与javascript交互
阅读量:5300 次
发布时间:2019-06-14

本文共 1628 字,大约阅读时间需要 5 分钟。

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内容比较简单:

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

转载于:https://www.cnblogs.com/zhangqs008/p/3618422.html

你可能感兴趣的文章
Mybatis生成resulteMap时的注意事项
查看>>
jquery-jqzoom 插件 用例
查看>>
1007. Maximum Subsequence Sum (25)
查看>>
iframe的父子层跨域 用了百度的postMessage()方法
查看>>
图片生成缩略图
查看>>
动态规划 例子与复杂度
查看>>
查看oracle数据库的连接数以及用户
查看>>
【数据结构】栈结构操作示例
查看>>
中建项目环境迁移说明
查看>>
三.野指针和free
查看>>
activemq5.14+zookeeper3.4.9实现高可用
查看>>
TCP/IP详解学习笔记(3)IP协议ARP协议和RARP协议
查看>>
简单【用户输入验证】
查看>>
python tkinter GUI绘制,以及点击更新显示图片
查看>>
HDU4405--Aeroplane chess(概率dp)
查看>>
CS0103: The name ‘Scripts’ does not exist in the current context解决方法
查看>>
20130330java基础学习笔记-语句_for循环嵌套练习2
查看>>
Spring面试题
查看>>
窥视SP2010--第一章节--SP2010开发者路线图
查看>>
MVC,MVP 和 MVVM 的图示,区别
查看>>