使用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