GET到新技能,SharpCEF,C#和JS的互相调用

时间:2016-08-22 02:02:20   收藏:0   阅读:2567

winform程序内嵌谷歌浏览器,使用大名鼎鼎的“SharpCEF”。这里科普一下:

CEF是什么

CEF是Chromium Embedded Framework的缩写,是个基于Google Chromium项目的开源Web browser控件,支持Windows, Linux, Max平台。除了提供C/C++接口外,也有其他语言的移植版。

因为基于Chromium,所以CEF支持Webkit & Chrome中实现的HTML5的特性,并且在性能上面,也比较接近Chrome。

CEF还提供的如下特性:自定义插件、自定义协议、自定义JavaScript对象和扩展;可控制的resource loading, navigation, context menus等等。

谁在用CEF

让我们通过一些实战中的例子,来说明大家都使用CEF做了什么:

为什么要给客户端内嵌CEF?

举了那么多例子之后,这个问题说起来就容易多了:

 

 据说好些牛X的产品都是使用了相关技术,各位看官请看:

技术分享

 

 NanUI是园子一位伙伴“林选臣”的作品。这里只是借用一下他收集的图片。

下面是正文:

1、js调用C#的方法

  browser.RegisterJsObject("callHostFunction", new JsCallback(browser, this));

JsCallback是个C#声明的一个类,browser是ChromiumWebBrowser的实例。RegisterJsObject表示注册一个js对象,对象名是callHostFunction.

JsCallback里有个方法 比如:

 /// <summary>
        /// 方法名首字母小写,否则js会出现找不到方法
        /// </summary>
        public void callBackDemo()
        {
            new CashieActionForm().ShowDialog();
            //MessageBox.Show("JS request","From JS");
        }

 那么js应该这样写:

<script type="text/javascript">

   function demo(){
	callHostFunction.callBackDemo();
   }
   
   function ExecPayResult(para){
       alert(para);
   }
</script>

 html : <input type="button" onclick="demo();" value="do feng`s 测试" id="btncookies" class="am-btn am-btn-danger" /> 

2、C#调用js里的方法

 browser.ExecuteScriptAsync("ExecPayResult(‘123‘)", new object[]{}); 

如上面举例就是C#代码里面调用js里面ExecPayResult方法,并传统参数‘123‘。

 

不想做雷锋。主要是记录下来备忘的。

 

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!