使用CEfSharp之旅(2) js前台事件执行后台方法

来源:互联网 发布:森女系裙装淘宝店 编辑:程序博客网 时间:2024/06/08 05:15
记录工作使用心得。
 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事件通过注册进入页面,通过

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)            {            }        }         }



 
阅读全文
1 0