cefsharp

ISchemeHandlerFactory只有一个方法,就是Create,创建一个IResourceHandler实例

IResourceHandler用于定制资源处理器,方法有:

1. Cancel,取消处理请求,就是不请求

2. GetResponseHeaders

3. Open, 打开响应头的流

4. Read,读取Response数据

5. ReadResponse, 读取Response数据

6. Skip

ResourceHandler, 是IResourceHandler的默认实现,有多个很有用的静态方法。一般情况下够用了。

 

官方使用说明:

https://github.com/cefsharp/CefSharp/wiki/General-Usage

加载本地的html/css/js文件:

https://stackoverflow.com/questions/52338368/loading-local-html-css-js-files-with-cefsharp-v65

从.net中调用javascript:

https://github.com/cefsharp/CefSharp/wiki/General-Usage#1-how-do-you-call-a-javascript-method-from-net

从javascript中调用.net

https://stackoverflow.com/questions/23425059/call-net-from-javascript-in-cefsharp-1-wpf

个人写的加载嵌入资源的blog:

https://thechriskent.com/2014/05/12/use-embedded-resources-in-cefsharp/

一个

https://stackoverflow.com/questions/28697613/working-with-locally-built-web-page-in-cefsharp

ChromiumWebBrowser.LoadString(string html, string url);

的例子.

从winform发起POST web api (没有答案).

https://stackoverflow.com/questions/53405575/cefsharp-make-a-post-web-api-call-win-forms-c-sharp

直接加载本地磁盘文件:

https://github.com/cefsharp/CefSharp/blob/cefsharp/63/CefSharp.Example/CefSharpSchemeHandlerFactory.cs#L77

了解一下ResourceHandler.FromFilePath函数.

 

执行javascript:

https://stackoverflow.com/questions/31155779/cefsharp-execute-javascript

nuget安装了75.1.143 wpf版本, 安装之后需要重启才能看到cef相关的引用.

需要注意(至少4个文件在安装包里面):

libcef.dll

icudtl.dat

CefSharp.dll

CefSharp.Wpf.dll

cefsharp可以截获url, LoadHtml(string, url), 第一个是html字符串, 第二个是html有可能往真正的url发ajax请求的,这就意味着cefsharp可以截获从url带回来的html, 而用你提供的html来渲染, 比如, 你想做个假的baidu主页, 真是脑洞大开啊

https://stackoverflow.com/questions/27659086/cefsharp-loadhtml

最简单实用的一个视频:

https://www.youtube.com/watch?v=NTlErRwyYRA

如果没有显示调用Cef.Initialize, CefSharp会自动为你调用, 是以默认的配置.

1. CefSharp.BindObjectAsync在js中调用, 绑定一个对象
2. BindObjectAsync会返回一个Promise, 只有Promise解析成功后, 对象才可用, 但是例子中没有
2.1 实际上用await等到BindObjectAsync执行完成就可以用了。不用对返回的Promise进行处理了。
2. 上面函数返回一个Promise, 在C#中可以看到
3. 绑定的对象只存在全局上下文, 就是说附着在window对象的属性上面
4. 绑定的所有方法都是非阻塞的, 都会返回一个标准的JavaScript Promise, 用awaited等待
4. 如果不带参数调用BindObjectAsync, 那所有注册的对象都会被绑定
4.1 但是命名绑定会更有可读性。因为维护代码的人可以看到描述性的文字, 借以猜到代码的意义

第一步: 定义绑定对象
https://github.com/cefsharp/CefSharp/wiki/General-Usage#3-how-do-you-expose-a-net-class-to-javascript
第二部: 注册绑定对象
JavaScriptObjectRepository, 二种方法, 一种是事先绑定, 一种是实时绑定
第三步: 从js中调用绑定对象的函数

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

novodexx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值