1. 背景
为一个大型集团客户开发一套系统,为了便于升级维护使用了B/S结构。
BUT,客户要求客户端能读写射频卡、操作打印机打印票据,还好,可以写个C# winform程序通过webbrowser控件内嵌网页,同时也支持JS和C#代码互相调用。操作硬件读写卡、打印的功能交给C#就是了。
BUT,客户电脑竟然还有少量的XP…顿时无语,虽然是XP比例少,奈何人家体量大,咱们也没法要求客户把XP系统都换了。
欲哭无泪啊,要知道XP系统IE版本最高到8,而webbrowser是IE内置的浏览器控件,那也就是说只能使用IE8特性,IE8这种远古巨兽对现在的前端技术支持简直就是渣渣渣。
2. 调查
没办法,客户就是上帝,先看看能不能在IE8框架内解决问题吧。
首先IE8不支持HTML5,头疼,好在通过html5shiv可以实现兼容IE8。
第二,IE8 支持的 CSS3 新特性很少,不到30%。这意味着一些漂亮的前端css部分可能GG了,另外兼容性也是个大问题了,几乎所有页面都得在IE8里面测试下实际效果,而IE8的测试效率简直渣渣渣
第三,心里有中不详的预感,看下vue吧,登录Vue官网,看到下面一条消息,感觉不会再爱了。
Vue 不支持 IE8 及以下版本,因为 Vue 使用了 IE8 无法模拟的 ECMAScript 5 特性。但它支持所有兼容 ECMAScript 5 的浏览器。
1
第四,绝望中去查了下react和angular,都已经放弃了对IE8的支持。
OK,我也放弃。
3. webbrowser的替代方案
网上查了查,可以在.net平台使用的浏览器嵌入控件方案有几种
首先是WebKit .net,版本旧的相当可以,查阅了N多博客,踩了N多坑,最后也没在XP上跑起来,就算跑起来了也不敢用,N年前的东西了以后能不能活还不一定。
然后是GeckoFX,这家伙是FireFox的gecko内核机制的,但是网上资料很少,又踩了N多坑,最后跑都没有跑起来,直接GG。
最后找到了CefSharp,好家伙一看有github,最近几天还在更新,顿时心内一定,就是它了。
4. CefSharp介绍
github介绍很精准,地址:CefSharp的GitHub,大体说的是:
CefSharp是可以在.net应用内嵌的Chromium内核控件,支持VB、C#等CLR语言,支持winform、wpf等平台。
通俗的说,就是开发的.net程序可以通过CefSharp内嵌一个网页。
不错不错,那就开始使用吧。
5. 准备工作
首先安装个xp系统测试用,win7、win10上能跑起来绝对说明不了xp下可用。
然后xp系统得安装. net framework4.0,经过我多次失败的验证,好像.net4.0以下使用CefSharp一直报错,搞不懂啊。当然XP系统是可以安装. net framework4.0的,附地址:.net4.0地址
然后还得安装VC++2013运行库,这个是CefSharp运行的基础,忍忍吧,XP能装上就算不错了。提供地址:
vc++2013运行库下载。
然后得有Visual Studio开发.net程序,此处我用的VS2013。
然后下载CefSharp得用NuGet工具,此处提供下载地址:NuGet下载地址。下载后双击安装即可,注意版本。安装后VS2013工具菜单下会多出NuGet包管理器子菜单。
工欲善其事必先利其器,这些准备工作都到位了,就可以开始大干一场了。