CefSharp内核浏览器之C#与js的互相调用

  • js调用C#方法
    • 1.注册js调用对象
    • 2.创建JS类
    • 3. HTML网页js调用
  • C#调用js方法
    • 1. html写法
    • 2. C#调用

js调用C#方法

1.注册js调用对象

这是新版的注册方法,旧注册方法已经过时,官方已经抛弃,所以按照最新的写法,详情请查看https://github.com/cefsharp/CefSharp/issues/2990

//旧方法,官方已经抛弃
browser.RegisterJsObject("bound", new BoundObject(), options: BindingOptions.DefaultBinder);
//新方法,直接复制下面的就行
CefSharpSettings.LegacyJavascriptBindingEnabled = true;
CefSharpSettings.WcfEnabled = true;
browser.JavascriptObjectRepository.Register("jsEvent", new JsEvent(tbUrl), isAsync: false, options: BindingOptions.DefaultBinder);

注意该段代码要写在浏览器加入控件之前,否则网页会调用不到,报找不到方法的错误。我之前就是没有注意到,搞了大半天,没有调用成功。
比如下面的例子

browser.JavascriptObjectRepository.Register("jsEvent", new JsEvent(tbUrl), isAsync: false, options: BindingOptions.DefaultBinder);
this.splitContainer1.Panel1.Controls.Add(browser);
browser.Dock = DockStyle.Fill;

2.创建JS类

在第一步中我们注册对象使用了JsEvent()类
所以我们要创建一个类来存放js需要调用的方法

public class JsEvent
{TextBox url;public JsEvent(TextBox tbUrl){url = tbUrl;}//获取TextBox的内容public string getSrc(){return url.Text ";}
}

3. HTML网页js调用

function GetCef() {//控制台打印数据,验证一下console.log(jsEvent.getSrc());return jsEvent.getSrc();
}

做到这一步,一般来说js已经能正确的调用C#中的方法了。

C#调用js方法

C# 调用js就比较简单了,参照以下代码

1. html写法

加入一个id为 btn_play 的按钮

<button id="btn_play" >播放</button>

在script方法中实现 btn_play 的点击事件

<script type="text/javascript">$(function() {$("#btn_play").click(function(){var txt = GetCef();console.log("button.play---"+txt);});});
</script>

2. C#调用

//chromium browser
browser.GetBrowser().MainFrame.ExecuteJavaScriptAsync("document.getElementById('btn_play').click();");

经过上面的操作,我们就可以在C#中调用js方法了。是不是很简单。

CefSharp内核浏览器之C#与js的互相调用相关推荐

  1. Android集成三方浏览器之Crosswalk

    上一篇讲解了腾讯 X5 内核的集成,这一篇是讲解 Crosswalk 的集成 Crosswalk 也是采用了Chromenium 内核,是一款开源的 web 引擎,开发者可以直接把 Crosswalk ...

  2. 【校招VIP】前端浏览器之性能和加载优化

    考点介绍: 随着前端项目不断扩大,浏览器渲染的压力变得越来越重.配置好一点的计算机可以顺利地展现页面:配置低一些的计算机渲染页面的性能就不那么可观了.性能优化部分的面试题主要考察应试者对网站性能优化的 ...

  3. [转]Android 和 iPhone 浏览器之战,第 2 部分: 为 iPhone 和 Android 构建基于浏览器的应用程序...

    简介: 本文是共两部分的系列文章 "Android 和 iPhone 浏览器之战" 的第 2 部分,主要关注为 iPhone 和 Android 开发基于浏览器的应用程序.在第 1 ...

  4. 浏览器之争:程序员眼里浏览器的地位 IE:我开了!

    主流浏览器之争从上个世纪开就开始,已经持续了很长的时间.就在几年前,IE还是最主流的web浏览器.但现在形势完全不同了,人们都在笑话IE,纷纷转向其它浏览器.今天,我向大家分享一下针对IE的搞笑图片, ...

  5. 移动web时代已开启:腾讯X5内核浏览服务

    随着移动互联网的快速发展,手机浏览器市场也变得异常火爆.当HTML5从技术变成标准并逐步成为现实.浏览器厂商纷纷推出自主研发的内核,X5内核浏览便是其中的佼佼者. X5内核浏览服务是什么? X5内核浏 ...

  6. Google 与微软的浏览器之争

    浏览器再现"神仙打架". 整理 | 屠敏 头图 | CSDN 下载自东方 IC 出品 | CSDN(ID:CSDNnews) 从 IE 到 Chrome,再从 Chrome 到 E ...

  7. Netscape与IE的浏览器之争

    Netscape与IE的浏览器之争 1992年,在伊利诺斯州大学里,一个20岁出头.尚未毕业的计算机科学专业的大学生,每天除了上课,就是在NCSA(美国的国家超级计算中心)工 作.这天,一群同年龄的大 ...

  8. 微软与网景与浏览器之争

    一 1975年,当微软诞生的时候,比尔·盖茨只有19岁,他的员工只有3个,当年的营业收入仅1.6万美元.让微软腾飞的"决定性产品",便是比尔于1985年推出的Windows(视窗) ...

  9. 网景如何才能打败微软而赢得浏览器之战?

    网景如何才能打败微软而赢得浏览器之战? 内容提要:比尔盖茨在<未来之路>中介绍了他是如何通过正反馈理论打败所有竞争对手,使微软系统成为行业标准的.微软依仗其在操作系统中的统治地位,它可以通 ...

最新文章

  1. python扫雷代码文件_基于Python实现的扫雷游戏实例代码
  2. MSN Messenger终于好使了
  3. 为什么 c = tf.matmul(a, b) 不立即执行矩阵乘法?
  4. 使用nagios监控io,内存
  5. 使用MSTest v2进行单元测试的并行化
  6. c语言的指针详解ppt,最全的C语言指针详解.ppt
  7. 开源中文关系抽取框架,来自浙大知识引擎实验室
  8. require,include,require_once和include_once之间的区别?
  9. MAC编译OpenJDK8:详细步骤及问题解决办法(含独家解决办法)
  10. 全国计算机网络考试和答案,全国计算机三级《网络技术》复习题及答案2017
  11. 国密SM2算法流程概述
  12. Moq 和 RhinoMocks
  13. 洛谷 U5773 受望先锋
  14. JavaPoet使用详解
  15. 实现内网穿透,个人电脑秒变服务器
  16. echarts实现各省市地图、中国地图
  17. 翻译—使用Python分析离散心率信号–第2部分
  18. 深开鸿携手深业健康、家具协会打造智慧康养新模式,推动行业新标建设
  19. table内容超长自动隐藏,鼠标放置后浮动显示全部内容
  20. RJ45水晶头接线和网线测试仪如何使用

热门文章

  1. 通达信转MT4怎么弄
  2. 多种图像配准方法的综合比较(KAZE、SIFT、SURF等)
  3. SQL Server-设置局域网内访问
  4. exe停止运行C语言,处理win7应用程序已停止“异常代码c0000005”的方法
  5. Java项目结构的总体理解
  6. 探索Ristretto量化工程—问题记录
  7. 深入理解计算机系统-之-数值存储(二)--C程序打印变量的每一字节或者位
  8. C语言 if语句详解
  9. Python学习(六)Python自带IDLE使用方法
  10. 报错:Misplaced alignment tab character 的解决办法以及参考文献的书写方式、There were undefined citations.解决办法