static ChromiumWebBrowser web; private void Browserform_Load(object sender, EventArgs e) { try { web = new ChromiumWebBrowser("www.baidu.com"); web.Dock = DockStyle.Fill; web.RequestHandler = re; web.FrameLoadStart += Web_FrameLoadStart; web.FrameLoadEnd += Web_FrameLoadEnd; web.LoadingStateChanged += Web_LoadingStateChanged; this.Invoke(new Action(() => { this.Controls.Add(web); })); //browser表示你的CefSharp對象使用它的RegisterJsObject來綁定你的.net類 web.RegisterJsObject("bound", new BoundObject()); //在實際的JS代碼中,你將使用這樣的對象: //bound.myProperty; // 使用此語法訪問屬性 //bound.myMethod(); // 使用此調用方法。 } catch (Exception ex) { // MessageBox.Show(ex.ToString()); }
將js事件經過註冊進入頁面,經過css
bound.myMethod(); 訪問後臺方法。
bound.MyProperty 訪問後臺屬性。
private async Task initmethodAsync() { string js_func = ""; js_func += " var all = $(\"div[class='ng-scope']\"); for (i = 0; i < all.length; i++) { all[i].onclick = onNickName; }"; js_func += " function onNickName() {bound.myMethod($(this).find('span').eq(0).text(),$(this).find('img').eq(0).attr('src'));}; "; JavascriptResponse x = await web.EvaluateScriptAsync(js_func); }C# 事件響應類:
public class BoundObject { public string MyProperty { get; set; } public void MyMethod(string ShowNickName,string html) { try { Console.WriteLine("我來響應前臺的的事件"); } catch (Exception ex) { } } }