c#调用CefSharp谷歌内核

c#调用CefSharp谷歌内核

CefSharp:101.0.150版本
参考官网手册:https://github.com/cefsharp/CefSharp/wiki/General-Usage#registerjsobject

CefSharp与js交互

窗口类部分
 private ChromiumWebBrowser _chromiumWebBrowser;
   public Form1()
        {
            InitializeComponent();
            //实例化控件
            _chromiumWebBrowser = new ChromiumWebBrowser("C://Users//Administrator//Desktop//login.html");
            //   wb.JavascriptObjectRepository.Register("boundAsync", new JsEvent(), false,  BindingOptions.DefaultBinder);//交互数据              

            //设置停靠方式
            _chromiumWebBrowser.Dock = DockStyle.Fill;

            // 页面加载完毕后打开开发者工具
            _chromiumWebBrowser.FrameLoadEnd += (s, eve) =>
            {
                var browser = _chromiumWebBrowser.GetBrowser();
                browser.ShowDevTools();

            };
            NewMutliPage(); // 新版本的注入方式
            //加入到当前窗体中
            this.Controls.Add(_chromiumWebBrowser);
        }

   public void NewMutliPage()
        {
       
            _chromiumWebBrowser.JavascriptObjectRepository.Register("boundAsync", new BoundObject(), true, BindingOptions.DefaultBinder);


            _chromiumWebBrowser.JavascriptObjectRepository.ObjectBoundInJavascript += (sender, e) =>
            {
                var name = e.ObjectName;

               // Debug.WriteLine($"Object {e.ObjectName} was bound successfully.");
            };
        }

js部分


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title></title>
  <style>
  </style>
</head>
<body>

<button id="btn_play" onclick="c()">播放</button>

</body>
</html>

<script  language="javascript" type="text/javascript">

 // 新式注入

    function c() {
        (async function()
{
	await CefSharp.BindObjectAsync("boundAsync");
	
	//The default is to camel case method names (the first letter of the method name is changed to lowercase)
	boundAsync.add(16, 2).then(function (actualResult)
	{
        console.log(actualResult);
	});
})();
    }

</script>

CefSharp页面跳转

窗口类部分 _chromiumWebBrowser是之前添加窗口的  private ChromiumWebBrowser   _chromiumWebBrowser;

            var frame = _chromiumWebBrowser.GetMainFrame();

            //Create a new request knowing we'd like to use PostData
            var request = frame.CreateRequest(initializePostData: true);
            request.Method = "GET";
            request.Url = "htmldemo.html";//这里填静态页面地址
            //Set AllowStoredCredentials so cookies are sent with Request
            request.Flags = UrlRequestFlags.AllowStoredCredentials;
        

            frame.LoadRequest(request);
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CefSharp是一个基于Chromium Embedded Framework的.NET封装库,它允许开发者在.NET应用程序中嵌入HTML5内容。如果你想要劫持CefSharp来实现一些自定义功能,可以尝试以下步骤: 1. 在你的C#项目中安装CefSharp库,可以通过NuGet包管理器来完成。 2. 创建一个继承自CefSharp.WinForms.ChromiumWebBrowser的类,重写OnAfterCreated方法。 3. 在OnAfterCreated方法中获取当前的Browser对象,并通过Browser对象的GetHost方法获取Host对象。 4. 在Host对象中注册一个IRequestHandler实例,该实例可以拦截和处理浏览器请求。 5. 在IRequestHandler实例中实现自定义的处理逻辑,例如修改请求参数、注入JavaScript代码等。 下面是一个简单的示例代码: ```csharp using CefSharp; using CefSharp.WinForms; class MyBrowser : ChromiumWebBrowser { protected override void OnAfterCreated(CefSharp.IWebBrowser browserControl, CefSharp.IBrowser browser) { var host = browser.GetHost(); var requestHandler = new MyRequestHandler(); host.SetRequestHandler(requestHandler); } } class MyRequestHandler : IRequestHandler { bool IRequestHandler.OnBeforeBrowse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, bool isRedirect) { // 在这里可以修改请求参数 return false; } void IRequestHandler.OnResourceResponse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response) { // 在这里可以处理响应数据 } } ``` 需要注意的是,在实现自定义的IRequestHandler时,还可以覆盖其它方法来实现更丰富的功能,例如OnBeforeResourceLoad、OnResourceLoadComplete等方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值