第6篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:自动注册JS脚本+自动反射方法分析

第6篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:自动注册JS脚本+自动反射方法分析

本文转自“吾乐吧软件站”,原文链接:https://www.wuleba.com/?s=Xilium%20CefGlue

感兴趣的,可以加入:WebKit/Blink 内核浏览器开发 QQ交流群:244840771

开发语言为:.NET/C++ 方向

4、种方法,自动注册JS脚本+自动反射方法分析

 

4.1 实现过程:

 

(1)定义一个DemoRenderProcessHandler,继承自CefRenderProcessHandler

(2)重写DemoRenderProcessHandler里的OnWebKitInitialized ( )事件

(3)定义一个BindingHandler,继承自CefV8Handler

(4)、定义一个普通的类ExampleObject(这个类跟ExampleBv8Handler一样,只是不再需要继承CefV8Handle

(5)在BindingHandler里的Execute ( )事件中,通过反射,自动选择最合适的方法,进行调用,不再需要人工去写,几乎实现全自动

(6)OnWebKitInitialized ( )事件里面调用自己封装的类库,直接访问CefRuntimeEx.RegisterJsObjectEx ( )方法就可以自动注册,并且自动响应操作。

(7)写一个网页,去前台通过JS调用

 

4.2 核心代码:

 

这个方法,结合了方法一、方法二、方法三,采用反射自动生成所有的JS脚本注册,然后通过反射自动选择最合适的操作方法调用,为了减小文章篇幅,仅列出部分代码。

 

/// <summary>

/// DemoRenderProcessHandler.cs

/// </summary>

 

protected override void OnWebKitInitialized()

{

    #region 历史操作

 

    //使用方法二

    CefRuntimeEx.RegisterJsObjectEx("exampleObject"new ExampleObject());

 

    #endregion 历史操作

 

    base.OnWebKitInitialized();

}

 

由于这部分代码较多,实现过程较复杂,所以阐述下具体的实现流程,代码就不贴出来了,感兴趣的可以加入QQ群一起讨论!流程如下:

 

(1)、新建了一个BindingHandler.cs,这是整个封装的核心代码,继承自CefV8Handler

(2)、通过反射,找到对应的对象,并提取他的所有属性、方法

(3)、难点在于C#数据类型、Javascript数据类型、CefV8Value数据类型,三者之间的数据转换

(4)、调用自己写的CreateJavascriptFull ( ),获得该对象完整的JS脚本代码

(5)、完整JS代码包括:Header、Property、Method、Footer四个部分组成

(6)、拿到JS代码之后,通过CefRuntimeEx.RegisterExtensionEx ( )进行注册

(8)、当网页的JS访问后台数据时,在BindingHandler里的Execute ( )事件中,通过反射,自动选择最合适的方法,进行调用。

 

4.3 评价总结:

 

优势:

(1)自动注册JS脚本

(2)自动反射调用方法

(3)、彻底解决方法一、方法二、方法三残留的弊端问题

 

弊端:

(1)、无法判断方法来源,不知道是哪个对象调用的;如果同时注册的类,含有同名方法,就会全部被响应。

(2)、由于C#、Javascript、CefV8Value,三者之间数据类型存在较大跨度,会导致部分数据类型不工作,所以如果遇到特殊数据,尽可能使用string来操作。 

下载地址:2016年4月10日 此项目所有源码,以及文档正式开源 244840771 加QQ群下载

下载说明:① 请不要相信网站的任何广告;② 当你使用手机访问网盘时,网盘会诱导你下载他们的APP,大家不要去下载,直接把浏览器改成“电脑模式/PC模式”访问,然后免费普通下载即可;③ 123云盘限制,必须登录后才能下载,且限制每人每天下载流量1GB,下载 123云盘免流量破解工具

版权声明:
小编:吾乐吧软件站
链接:https://wuleba.com/8010.html
来源:吾乐吧软件站
本站资源仅供个人学习交流,请于下载后 24 小时内删除,不允许用于商业用途,否则法律问题自行承担。

THE END
分享
二维码
打赏
< <上一篇
下一篇>>