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. 将NetBIOS名称解析为IP地址的常用方法
  2. DirectX11 With Windows SDK--22 立方体映射:静态天空盒的读取与实现
  3. 汇编程序-更灵活的定位内存地址方法
  4. HK-2000 数采仪 航空头接口定义
  5. 评分卡开发方法论scorecard
  6. 为什么在定义hashcode时要使用31这个数呢
  7. C#获取本机IP地址字符串
  8. .net MVC路由
  9. eDiary电子日记本
  10. beanfactory的实现类_ApplicationContext和BeanFactory的区别
  11. 精通CSS:高级Web标准解决方案(第2版)--前言
  12. hmcl手机版_hmcl启动器手机版
  13. 预备篇:一.元器件选型及飞控电路设计
  14. 给树莓派安装手柄驱动
  15. 究竟是昨天(2.3)立春还是今天(2.4)立春?易语言告诉你真相
  16. 脉歌蓝牙耳机线评测_以腔调和功能取胜 脉歌TX90运动挂脖式蓝牙耳机评测
  17. css3图片倾斜3d动画效果
  18. UE基础知识:虚幻引擎编辑器界面-英汉对照表
  19. 各大型网站架构分析收集 1
  20. DELLR740带外镜像安装系统

热门文章

  1. 【业务架构】价值链分析的直接指南
  2. Sublime Text 3-->汉化版
  3. 在iOS中进行Mapbox地图开发杂谈
  4. 常见bootloader介绍
  5. 梅雪争春未肯降,词客骚人费评章。不是一番寒彻骨,哪得梅花扑鼻香。
  6. 互联网常用词汇索引表
  7. JS原生实现简单的轮播图(完整代码,一看就懂)
  8. OpenAI完胜DOTA世界冠军,20行python代码带你领略其魅力
  9. .NET 夏普比率,波动率的公式讲解和代码实现运算
  10. 牛逼了!DeepFake变脸再次来袭,强势霸屏GitHub热榜!偏门应用“美女脱衣”还会再出现么?...