相互调用

.NET中WebBrowser控件内部页面的JS代码与外部C#代码的相互调用

蹲街弑〆低调 提交于 2020-04-07 08:39:58
今天为了应对一个工作中遇到的场景,研究了下使用.NET中自带的WebBrowser时内部的JS代码与外部的C#代码相互调用的问题 我的操作系统为Win7旗舰版,IDE版本为VS2012,.NET版本为4.5 经过测试我得出了如下几个结论:(C#写的部分简称C,WebBrowser内的页面代码简称B) 1、C调用B的JS代码,可以传参数,可以接返回值 使用的是 webBrowser.Document.InvokeScript("JS中函数名", new object[] {参数列表}) 2、B调用C中写的函数,可以传参数,可以接返回值 使用的是 window.external.[C#中的函数名](参数列表) 下面来说一下我是如何实现它们: 1、在C#代码中调用WebBrowser内页面的JS函数 可以通过WebBrowser控件中的Document.InvokeScript函数实现,不过要为放置WebBrowser的窗体相关类加特性: [System.Runtime.InteropServices.ComVisible(true)] 没有这个特性,运行时会报错: 2、从WebBrowser内的JS代码中调用C#相关函数 可以通过JS代码:window.external.函数名(参数) 来调用C#中同名同参数个数的函数