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

2 篇文章 0 订阅
1 篇文章 0 订阅

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方法了。是不是很简单。

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
C#中,你可以使用CefSharp库来实现Chrome内核的集成,并通过JavaScript调用后端方法。以下是一些基本步骤: 1. 首先,你需要在项目中引用CefSharp库。你可以通过NuGet包管理器安装CefSharp。 2. 在C#代码中,你需要创建一个ChromiumWebBrowser控件来承载Chrome内核。你可以将该控件添加到窗体或用户控件中。 ```csharp using CefSharp; using CefSharp.WinForms; // 创建ChromiumWebBrowser控件 ChromiumWebBrowser browser = new ChromiumWebBrowser(); ``` 3. 接下来,你需要在窗体加载时初始化ChromiumWebBrowser控件,并注册C#方法JavaScript调用。 ```csharp // 初始化ChromiumWebBrowser控件 browser.Dock = DockStyle.Fill; this.Controls.Add(browser); // 注册C#方法JavaScript调用 browser.RegisterJsObject("backend", new BackendMethods()); ``` 4. 创建一个类来定义后端方法,供JavaScript调用。 ```csharp public class BackendMethods { public void MyMethod(string data) { // 在这里编写后端方法的逻辑 } } ``` 5. 在JavaScript中,你可以通过window.backend对象来调用后端方法。 ```javascript // 调用后端方法 backend.MyMethod("Hello, backend!"); ``` 当JavaScript调用后端方法时,C#中的BackendMethods类中相应的方法将被调用,并且你可以在那里编写你的后端逻辑。 请注意,以上只是一个简单的示例,你可以根据自己的需求进行适当的修改和扩展。此外,使用CefSharp库也提供了更多高级功能,如处理JavaScript事件、获取返回值等。你可以参考CefSharp的文档和示例代码来了解更多详细信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值