赞
踩
背景:项目采用 Ionic + Cordova 混合开发模式,已经成功运行在 iOS 和 Android设备上,由于主体代码都是 H5,所以尝试封装 Windows 客户端。
所以有几个特殊需要:① 访问本地网页;②访问跨域资源
本地环境:
缩写说明:
本文用的 Visual Studio 2013,需要系统安装 IE10+才能安装,自带的运行环境 .NET FrameWork 4.5.1 是不满足 Cef 最低要求的,因此需要安装 4.5.2 开发包,或者直接装 Visual Studio 2017 就好。
如下图所示,刚装上 VS 2013 是没有 4.5.2的,需要装开发包才行,网盘里提供了,或者点列表的“安装其他框架”去官网下载也行。若是 VS 2017 可以跳过这步。
选择 C# 类型以及 .NET Framework 4.5.2,然后自定义项目名称和路径即可
生成 -> 配置管理器,修改为 x64 平台或者 x86 平台,因为 Cef 不能自动选择平台,然后点击启动,编译成功后就会弹出窗体
①项目名称右键 -> 管理 NuGet 程序包…
②联机搜索 Cef 并安装
③打开引用列表,看到有CefSharp,CefSharp.Core,CefSharp.Winforms这三个包就OK了
可以先测试打开普通网页,比如 www.baidu.com
由于选择了 x64 平台,所以应该复制到 \bin\x64\Debug 目录下
原理与 Chrome 启动命令一致,cSettings.CefCommandLineArgs 添加启动命令,其他命令可参考链接:Chrome命令行参数大全(配置选项、启动参数)
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 CefSharp.WinForms; using CefSharp; namespace cef { public partial class Form1 : Form { public Form1() { InitializeComponent(); InitBrowser(); } public ChromiumWebBrowser browser; public void InitBrowser() { //String path1 = "www.baidu.com"; //string url = AppDomain.CurrentDomain.BaseDirectory + @"..\..\..\Map\mapHtml\Map.html"; //url = url.Replace("\\", "/").Replace(" ", "%20"); //var setting = new CefSharp.CefSharpSettings(); CefSettings cSettings = new CefSettings(); cSettings.MultiThreadedMessageLoop = true; cSettings.CefCommandLineArgs.Add("--disable-web-security", ""); cSettings.CefCommandLineArgs.Add("--user-data-dir", "C:\\MyChromeDevUserData"); Cef.Initialize(cSettings); String path = AppDomain.CurrentDomain.BaseDirectory + @"www\index.html"; browser = new ChromiumWebBrowser(path); this.Controls.Add(browser); browser.Dock = DockStyle.Fill; } } }
① .NET 自带的 WebBrowser 是WEB 开发人员最讨厌的 IE,性能低下而且兼容性差
② Webkit: 项目已经不再支持
③ Cef 是 Chrome 内核,性能和兼容性杠杠的。缺点就是带的 DLL 太多太大,一个发布版应该在150M左右,X86+X64一块就得快300M了。另外EXE加载速度也比较慢,大概10秒左右,需要耐心等待。
① 主要在 Windows 上使用,如果有需要在 Linux 上用的,可以考虑 JAVA CEF
② 在 .NET 下,Cef WPF 显示性能比 Cef Winform 要差很多,有兴趣的可以测试一下
可以把 www 文件夹下面的 index.html 换成自己的网页就能访问本地网页以及访问跨域资源了
https://download.csdn.net/download/zhichaosong/10878385
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。