使用C#与CefSharp相互调用所踩过的坑

半腔热情 提交于 2020-08-09 02:43:49

第一个坑:

必须在初始化的时候加上这句,注意:值是false,false,false(重要的事情说3遍),意思是不支持旧版绑定模式。

CefSharpSettings.LegacyJavascriptBindingEnabled = false;

 

第二个坑:

在HTML页面上必须加上这句,其中 bound 是在C#代码里注册对应的name参数。

 

CefSharp.BindObjectAsync('bound').then(function (result) {
    bound.SetAutoResetEvent('ID','text');
});

 

  

 

 

网页调用C#完整的步骤:

第一步:

初始化时加上这句:

CefSharpSettings.LegacyJavascriptBindingEnabled = false;

第二步:

创建调用对象:

public class CallClass
{
    public CallClass()
    {
    }
    public void SetAutoResetEvent(string id,object objResult)
    {

    }
}

注册对象

CallClass cc=new CallClass();
browser.JavascriptObjectRepository.Register("bound", cc, false);

 

第三步:

在HTML添加:

CefSharp.BindObjectAsync('bound');

 

第四步:

在HTML的JS中调用:

bound.SetAutoResetEvent('ID String','ResultString');

 

 C#调用网页完整实例:

var strJs = @"
(function(){
    try{
        alert("执行成功");
    }catch(e){
        alert("error:"+e.description);
    }
    return true;
})();
";
var bResult=browser.EvaluateScriptAsync(strJs).Result.Result;

执行完毕后bResult=true

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!