CefSharp 初用遇到的一些问题及解决方法
之前用WebBrowser,打开网页很卡,但因为并是太要求速度和体验,所以可以显示html就可以了。但是,现在要求显示速度,最主要问题是WebBrowser控件的UserAgent,其实并不完全是IE(之前大家都以为是),而是7.0,有一个办法可以在注册表中修改,修改为10.0,但是在测试网站,如:http://whatsmyua.com/ ,显示的是WebBrowser,而不是IE10。应该是这个问题,使很多网站都会提示,版本太低或不支持这款浏览器,这样没办法正常显示,虽然只有少部分,但遇到关键的网站干着急。
找到CefSharp这个开发包,下载了源码和执行文件,速度比WebBrowser要快不卡了,而且有错误提示的网站也都正常显示了。但在分析源码时,遇到一些问题,由于独自研究耽搁一天多,以后也可能还会遇到,在此总结下。
源码分为几个工程,有WinForm和Wpf两种演示,虽然我很喜也更善长Wpf,但因为软件效率的原因,还是只看WinForm,有支持的VC托管工程CefSharp和CefSharp.WinForms,另外有mvc方式的示例c#工程CefSharp.Example,执行文件依赖的是CefSharp.dll和CefSharp.WinForms.dll。另外,需要加入icudt.dll和libcef.dll,生成操作设置无,输出设为新复制,因为CefSharp.dll需要,否则将会报错。另外,CefSharp是x86编辑,需要修改使用的工程属性在编译目标设置为x86,否则有编译警告。
将locales及其下所有都设置为输出,里面有个en-US.pak文件,如没有,则应用程序会启动显示错误退出。
再将devtools_resources.pak 设置为输出,否则调用devtools时将报错不能打开。(常见问题官网解释)
还有一个非常奇怪没能解决的问题,想封装WebView(CefSharp.WinForms.dll实现的浏览器类),到一个UserControl,但如果拖放这个控件到其它控件上或窗体上,则会报文件找不到CefSharp.dll或其依赖项,Reflector也没能找到到底是缺了什么。只要是在userControl引用WebView的实例就会报错,只能使用反射建立的办法迂回建立了。谁知道原因和办法,请发给我:)
上面说的CefSharp.Example定义了一个绕的方案的解决控制与视图间的关联,这样真的耦合低么,但我的需求很简单,就是按WebBrowser的设计封装一个相同方法的类,用来替换它。但后来发现,确实有必要,因为Cef的结构很繁杂,可能是功能多的原因吧。
IWebBrowser 有XXXXXHandle属性,用来控制浏览器的运行。之前我需要的不打开新窗口,只转向,需要实现ILifeSpanHandler,然后返回true证明处理了。
Cef分为系统初始化和设置参数,还有BrowserView的参数设置。更多的控制需要详看CefSharp.Example,我仔细看过,没什么不理解处。至于前面的VC工程实在没有细看的耐心了,暂时不需要。
c++和c#联合编成 使用webBrowser在网页中插入js脚本并执行 一个ISchemeHandler例子 用javascript获取图片颜色
CefSharp 初用遇到的一些问题及解决方法的更多相关文章
- seajs初尝 加载jquery返回null解决学习日志含示例下载
原文地址:http://www.tuicool.com/articles/bmuaEb 如需demo示例,请点击下方链接下载: http://yunpan.cn/cVEybKs8nV7CF 提取码 ...
- CefSharp F12打开DevTools查看console js和c#方法互相调用
转载地址: https://www.cnblogs.com/lonelyxmas/p/11010018.html winform嵌入chrome浏览器,修改项目属性 生成 平台为x86 1.nuget ...
- 关于Cefsharp无法拖动Dom元素的解决方法
如图所显示,Cefsharp在嵌入网页,页面有对Dom元素的拖动的操作,独立在浏览器上对网页元素的拖动是没有问题的,但是嵌入到Cefsharp上显示禁用的图标.排查了H5的代码,没有写入禁用拖动的操作 ...
- 初用eclipse和svn遇见的问题以及解决方法
第一次用eclipse 首先用SVN输入URI出现报错 去百度查了一下 大致就两点问题 1.防火墙的问题 2.SVN服务没开 我两个问题都不存在就去请教大神得到解决方案 解决方案:把URI的机器名改成 ...
- resin WED服务器初用遇到的问题和解决方法 java.lang.RuntimeException: java.net.SocketException: Unrecognized Windows Socke ts error: 0: JVM_Bind
开启resin 服务器以后提示如下:(控制台不断的循环循环打印如下错误提示) java.lang.RuntimeException: java.net.SocketException: Unrecog ...
- 浅谈WebService的版本兼容性设计
在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...
- python--爬虫入门(七)urllib库初体验以及中文编码问题的探讨
python系列均基于python3.4环境 ---------@_@? --------------------------------------------------------------- ...
- EventBus初理解
缘由: 平时工作,因为懒于动笔的原因,也没注重技术和经验的积累,导致之前曾经研究过的问题现在又忘记了,所以要慢慢注重积累,那么就从写作开始,谈谈对工作中碰到的问题进行整理和归纳. 我们 ...
- 未能加载文件或程序集“CefSharp, Version=1.25.XXXX”或它的某一个依赖项。试图加载格式不正确的程序。
在使用CefSharp的过程中遇到一个坑爹的错误. 从GitHub的项目主页:https://github.com/cefsharp/CefSharp/wiki/Frequently-asked-qu ...
随机推荐
- yum源的搭建
1.光盘的挂载 2.先创建一个文件 /aaa 然后挂载mount /dev/cdrom /aaa 进入 /aaa ls 查看是否挂载OK 3.进入yum文件夹.将除Media以外的所有文件名改为X ...
- Exploratory Undersampling for Class-Imbalance Learning
Abstract - Undersampling is a popular method in dealing with class-imbalance problems, which uses on ...
- mvc 导入,导出excel
最近主要做导入excel 在网上查询了代码 public FileResult DownLoadExcelJiZuChaXunGenRenXiaoFeiJiLu() { DataTable dt = ...
- RS232,RS422串口标准小结
RS232和RS422都是广泛使用的异步串行接口标准.由于它们实现简单且占用IO口资源少,在低速传输下是不错的方案. RS232是单端走线,最高波特率为115200,传输最远距离不超过150米,它的逻 ...
- 打开现有的pdf,并插入一个图片
不说了,直接代码 T_ScanUploadData file = _IScanUploadDataAccessService.GetScanUploadData(id); byte[] filedat ...
- javac找不到或无法加载主类 com.sun.tools.javac.Main
在安装jdk后或者以前安装了jdk某时使用javac编译java文件时出现找不到或无法加载主类com.sun.tools.javac.Main,这个问题时,网上一般都说是环境变量配置不对,这样的说法其 ...
- BZOJ 4408 主席数+找规律
#include <cstdio> ; inline void Get_Int(int &x) { ; ') ch=getchar(); +ch-'; ch=getchar();} ...
- Nginx反向代理配置可跨域
由于业务需要,同一项目中的前端代码放在静态环境中,而后端代码放在tomcat中,但此时问题却出现了:前端使用ajax请求后端获取数据时出现如下报错 XMLHttpRequest cannot load ...
- 易图软件之EaseMap Desktop 1.0发布
概述 易图软件之EaseMap Desktop 1.0是一款基于arcgis runtime for wpf开发的地图编辑软件. 软件代码编写历时1个月终于完成. 目前这个版本的功能包括: 地图基本操 ...
- mvc3 上传图片
这是在Control里使用的代码,是在后台管理需要上传图片时使用的,不过我在这犯了一个错误, Request.Files[inputName];inputName名字中的大小写<input ty ...