1.引入CEfSharp newget包
2.把平台配置為X86或X64,any cpu不支持此控件
3.引入命名空間
using CefSharp; using CefSharp.WinForms;
4.初始化
Cef.Initialize(new CefSettings() { }); browser = new ChromiumWebBrowser("http://192.168.2.247:8083/Demo.html"); this.Controls.Add(browser); browser.Dock = DockStyle.Fill; browser.IsBrowserInitializedChanged += Browser_IsBrowserInitializedChanged; ; browser.FrameLoadEnd += Browser_FrameLoadEnd;
5.后台訪問前台代碼
StringBuilder sb = new StringBuilder();//這里為js代碼 sb.Append(" document.getElementById('drawlinetext').value = 'longlatstart:114.009162902832,22.9938430786133;longlatend:114.009162902832,22.9938411712646;color:lightgreen;message:<div>車長度為0米</br>距離南橋257.33</br>距離北橋256.92</div>'; var _elm = document.getElementById('drawline'); ; var _evt = document.createEvent('MouseEvents'); _evt.initEvent('click', true, true); _elm.dispatchEvent(_evt); "); browser.GetMainFrame().ExecuteJavaScriptAsync(sb.ToString()); browser.ExecuteScriptAsync("");//有時不好用不知道為啥
6.前台訪問后台代碼
(1)首先要設計一個前后台訪問的通用類
public class BoundObject { public string MyProperty { get; set; } public void MyMethod(string ShowNickName, string html) { try { Console.WriteLine("我來響應前台的的事件"); } catch (Exception ex) { } } }
(2)把這個類作為中間媒介,前后端代碼兩邊注冊
前端
bound.myMethod(devicename, lng,lat);
后端
CefSharpSettings.LegacyJavascriptBindingEnabled = true;//設置允許使用js browser.RegisterJsObject("bound", new BoundObject());//bound必須為小寫,bound相當於句柄,個人理解