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

第6篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:自动注册JS脚本+自动反射方法分析
本文转自“吾乐吧软件站”,原文链接:http://www.wuleba.com/?p=23624
感兴趣的,可以加入: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来操作。
from:http://www.wuleba.com/23624.html
【转】第6篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:自动注册JS脚本+自动反射方法分析的更多相关文章
- 【转】第7篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:全自动注册与反射方法分析
作者: 牛A与牛C之间 时间: 2013-12-12 分类: 技术文章 | 2条评论 | 编辑文章 主页 » 技术文章 » 第7篇:Xilium CefGlue 关于 CLR Object 与 JS ...
- 【转】第5篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:自动注册JS脚本+委托回调方法分析
作者: 牛A与牛C之间 时间: 2013-11-19 分类: 技术文章 | 暂无评论 | 编辑文章 主页 » 技术文章 » 第5篇:Xilium CefGlue 关于 CLR Object 与 JS ...
- 【转】第4篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:委托回调方法分析
作者: 牛A与牛C之间 时间: 2013-11-18 分类: 技术文章 | 暂无评论 | 编辑文章 主页 » 技术文章 » 第4篇:Xilium CefGlue 关于 CLR Object 与 JS ...
- 【转】3篇:Xilium CefGlue 关于 CLR Object 与 JS 交互类库封装报告:官方原生方法分析
作者: 牛A与牛C之间 时间: 2013-11-17 分类: 技术文章 | 暂无评论 | 编辑文章 主页 » 技术文章 » 第3篇:Xilium CefGlue 关于 CLR Object 与 JS ...
- Xilium.CefGlue怎么使用Js调用C#方法
第1篇:.NET多种WebKit内核/Blink内核浏览器初步测评报告http://www.wuleba.com/?p=23590 第2篇:Xilium CefGlue 关于 CLR Object 与 ...
- xilium CefGlue集成包
最近很苦B的要做一个C#的HTM5项目,build了一下xilium CefGlue包,提供下载地址,供那些无法下载的同学们使用. http://yun.baidu.com/s/1slEdNEt
- Xilium.CefGlue利用XHR实现Js调用c#方法
防外链 博客园原文地址在这里http://www.cnblogs.com/shen6041/p/3442499.html 引 Xilium CefGlue是个不错的cef扩展工程,托管地址在这里 ht ...
- CEF Xilium.CefGlue 在当前窗体中打开全部链接(防止弹窗)
我们在使用Xilium.CefGlue编写浏览器应用程序时.对于嵌入的网页假设有链接会在新窗体打开.这种用户体验会非常差.因此我们须要改动程序,使全部链接都在当前窗体中打开. 首先引用Xilium.C ...
- SpringMVC4+thymeleaf3的一个简单实例(篇五:页面和MySql的数据交互-展示以及存储)
这一篇将介绍怎样把页面数据保存的MySQL数据库,并将数据库内容展示到页面上.首先做一个基础工作,添加以下jar到lib:1: mysql-connector-Java-5.1.40-bin.jar ...
随机推荐
- 数据结构 《6》----堆 ( Heap )
Practival Problems: a. Construct a Huffman code b. Compute the sum of a large set of floating point ...
- AD管理命令
repadmin /showrepl 显示复制协议 dcdiag /test:dns
- Helo command rejected: need fully-qualified hostname
Helo command rejected: need fully-qualified hostname问题 是由于postfix的配置文件(main.cf)有问题.其中有一个smtpd_sasl_l ...
- 浅谈对CSS的认识
自从进公司也有2个多月了,相信和我一批进来的小伙伴们都收获了很多东西,这个是在学校所学不到的,也让成长了很多.作为新人的我,从认为CSS是个很简单的东西,到现在觉得CSS中水很深,感觉学了很多的CSS ...
- LeetCode Binary Tree Paths(简单题)
题意: 给出一个二叉树,输出根到所有叶子节点的路径. 思路: 直接DFS一次,只需要判断是否到达了叶子,是就收集答案. /** * Definition for a binary tree node. ...
- Linux--/tmp目录文件重启后自动删除
源博客 http://blog.itpub.net/24996904/viewspace-769327/ 在/etc/default/目录下有个rcS文件,文件内容如下:## /etc/default ...
- 创建数据库时报"FILESTREAM 功能被禁用"
问题,创建含有FileStream数据库时报"FILESTREAM 功能被禁用" 解决方式 修改数据库属性 打开管理配置工具,右键打开sql server的属性,查看FILESTR ...
- Win7下安装双系统Centos,并修复Centos引导加载程序安装在U盘上的问题
1.使用U盘安装Centos时,磁盘分区划分要注意:系统(包含Win7)只能4个主分区,所以只能在删除一个主分区或者在扩展分区的空闲分区内建立目录. 2.Centos在安装步骤的最后,引导加载程序的选 ...
- JS控制文本框textarea输入字数限制
<html> <head> <title>JS限制Textarea文本域字符个数</title> <meta http-equiv="C ...
- Web上下文配置【MvcConfig】
基于Servlet3.0规范和SpringMVC4注解式配置方式,实现零xml配置,弄了个小demo,供交流讨论. 项目说明如下: 1.db.sql是项目中用到的表,数据库使用的是oracle11g ...