Mr.JSON

Results 7 comments of Mr.JSON

如果只是想把值传回来,那么请在C#端注册接收数据的JavaScript方法接口,比如 sendToCSharp。 那么你的方法可以改为: async function xxx() { const retval = await test()l sendToCSharp(retval); } NanUI的ExecuteJavaScript和EvaluateJavaScriptAsync实质上都是异步的,因为CEF采用多进程模型,而JS执行在渲染层,所以每次调用JS方法时,其实都是把JS代码异步传递到了渲染进程,然后由渲染进程执行后把结果又异步返回到浏览器进程,这个过程是无法实现同步的。你可以把这个过程看作HTTP协议的那种通信方式。 NanUI目前受制于框架模型已经本人的能力,因此并没有完美的实现JavaScript和C#之间的通信,因此实际业务中也需要根据这些限制来调整前端代码。

默认的CEF包是不支持h264格式的视频(也就是常说的mp4视频)。 需要自行编译CEF源码并在编译前加上支持视频播放的编译符号,编译CEF的方法可以参考:https://bitbucket.org/chromiumembedded/cef/wiki/MasterBuildQuickStart.md 如果懒得自己编译可以考虑赞助NanUI项目399元获得现成的可以支持视频播放的CEF包,请参考: https://github.com/NetDimension/NanUI#%E7%89%B9%E5%88%AB%E8%B5%9E%E5%8A%A9

CEF 的模型中在很多个环节上都提供了 CefRequest 对象,例如 BeforeBrowse 事件、GetResourceRequestHandler事件等等,那么捕获到浏览器的 Request,其中包括了请求的 URL 也就包含了目标的 Scheme,根据目标 Scheme 那么就可以开发相应的功能逻辑,要么交给系统(正如楼主的需求一样),要么自行处理。

![image](https://user-images.githubusercontent.com/16586330/174125902-8dbbc258-956d-467e-8d4f-90d58f69566d.png) 写了段代码说明一下。

可以参考下B站上面的这两个视频: https://www.bilibili.com/video/BV1j34y1B7fs/?vd_source=17b7aca52158823ec8a1fc452dde7dbf https://www.bilibili.com/video/BV1eS4y1Z7p2/?vd_source=17b7aca52158823ec8a1fc452dde7dbf

对于第一个问题,建议使用 WindowBinding 扩展一些方法到 JS 里,通过这些方法来调用后端的 C# 代码。 对于第二个问题,因为我年前被公司辞退,现在从头再来,因此时间没有之前多暂时没有尽力开启一个新的项目来维护;其次,作为浏览器控件 WebView2 是个更好的选择。