Cefsharp记录

目录

 

1.下载Cefsharp

2:引用

3:初始化

3.1:重写js弹框类

4:C#调用JS

5:JS调用C#

6:随时记录中。。。


1.下载Cefsharp

2:引用

cefsharp需要选择x64或者x86平台。否则添加引用的时候会报错(引用感叹号!)

如下图:如果没有对应平台可以自己添加。

然后项目右键,添加引用,找到对应平台(x64\x86),下载成功后的包会在项目的packages中

3:初始化

string str = System.IO.Directory.GetCurrentDirectory() + "\\CSIndex\\Index.html";
            ChromiumWebBrowser webview = new ChromiumWebBrowser(str)
            {
                BrowserSettings = { DefaultEncoding = "UTF-8" },
                JsDialogHandler = new Msg(),//重写js弹框
                Dock = DockStyle.Fill,
            };
            this.Controls.Add(webview);

3.1:重写js弹框类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CefSharp;
using System.Windows.Forms;

namespace Winform测试js
{
    class Msg : IJsDialogHandler
    {
        public bool OnBeforeUnloadDialog(IWebBrowser chromiumWebBrowser, IBrowser browser, string messageText, bool isReload, IJsDialogCallback callback)
        {
            throw new NotImplementedException();
        }

        public void OnDialogClosed(IWebBrowser chromiumWebBrowser, IBrowser browser)
        {
            throw new NotImplementedException();
        }

        public bool OnJSDialog(IWebBrowser chromiumWebBrowser, IBrowser browser, string originUrl, CefJsDialogType dialogType, string messageText, string defaultPromptText, IJsDialogCallback callback, ref bool suppressMessage)
        {
            switch (dialogType)
            {
                case CefJsDialogType.Alert:
                    MessageBox.Show(messageText, "提示");
                    suppressMessage = true;
                    return false;
                case CefJsDialogType.Confirm:
                    var dr = MessageBox.Show(messageText, "提示", MessageBoxButtons.YesNo);
                    if (dr == DialogResult.Yes)
                    {
                        callback.Continue(true, string.Empty);
                        suppressMessage = false;
                        return true;
                    }
                    else
                    {
                        callback.Continue(false, string.Empty);
                        suppressMessage = false;
                        return true;
                    }
                case CefJsDialogType.Prompt:
                    MessageBox.Show("系统不支持prompt形式的提示框", "提示");
                    break;
                default:
                    break;
            }
            return false;
        }

        public void OnResetDialogState(IWebBrowser chromiumWebBrowser, IBrowser browser)
        {
            throw new NotImplementedException();
        }
    }
}

4:C#调用JS

CefSharpSettings.LegacyJavascriptBindingEnabled = true;//运行运行JavaScript

int ren = 80;
string script = "refresh_top(" + ren + ")";
webview.ExecuteScriptAsync(script);//执行js中的函数

5:JS调用C#

5.1:首先创建一个类

5.2:注入

注入方法

/// <summary>
        /// 注册注入类
        /// </summary>
        /// <param name="ijtname">注入类的别名</param>
        /// <param name="classname">类</param>
        public void Injection(string ijtname,object classname)
        {
            webview.JavascriptObjectRepository.ResolveObject += (s, eve) =>
            {
                var repo = eve.ObjectRepository;
                if (eve.ObjectName == ijtname)
                {
                    repo.Register(ijtname, classname, isAsync: true, options: BindingOptions.DefaultBinder);
                }
            };
        }

注册注入

JsToClass jtc = new JsToClass();
Injection("jstoclass", jtc);//新注入

5.3:js调用

$(function () {
    //点击事件
    $("#dj").click(function () {
        show("你好")
    })
})

CefSharp.BindObjectAsync("jstoclass");//使用刚刚注册类的别名
function show(str) {
    jstoclass.showmsg(str);
}
//接收返回值示例
function updatepeople(a, b) {
    jstoclass.update(a, b).then((r) => { show(r) });
}

 

6:随时记录中。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值