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


第一个坑:

必须在初始化的时候加上这句,注意:值是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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM