摘要
在项目中使用了cefsharp,最后发现在触屏电脑上面,如果长按文本内容,会经常性的崩溃,发现是cefsharp的问题,最后也等不及了。然后就换了webkit.net这个开源的浏览器内核。
关于webkit
WebKit 是一个开源的浏览器引擎,与之相对应的引擎有Gecko(Mozilla Firefox 等使用)和Trident(也称MSHTML,IE 使用)。
同时WebKit 也是苹果Mac OS X 系统引擎框架版本的名称,主要用于Safari,Dashboard,Mail 和其他一些Mac OS X 程序。WebKit 前身是 KDE 小组的 KHTML,WebKit 所包含的 WebCore 排版引擎和 JSCore 引擎来自于 KDE 的 KHTML 和 KJS,当年苹果比较了 Gecko 和 KHTML 后,仍然选择了后者,就因为它拥有清晰的源码结构、极快的渲染速度。Apple将 KHTML 发扬光大,推出了装备 KHTML 改进型 WebKit 引擎的浏览器 Safari。
如何使用
首先需要下载Webkit.Net
官方地址:http://webkitdotnet.sourceforge.net/
下载之后,将bin下的文件拷贝到你的项目Debug下。
添加引用,引用WebKitBrowser.dll
测试
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using WebKit; namespace Wolfy.WebKitDemo { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { WebKitBrowser browser = new WebKitBrowser(); browser.Dock = DockStyle.Fill; browser.Navigate("file:///" + AppDomain.CurrentDomain.BaseDirectory + "www/setting.html"); this.Controls.Add(browser); } } }
结果
总结
最后选择了webkit.net作为winform内嵌的浏览器,首先winform自带的webbrowser与系统ie相关,兼容性不好。二是cefsharp,在触屏电脑上有个bug,就是如果长按页面的文本,就会出现崩溃。另外,安卓内嵌的webview也是基于webkit内核的,所以对触屏之类兼容性较好,本demo也在触屏电脑上测试了,没有cefsharp的长按崩溃的问题。