CefSharp 是C#平台下CEF的移植,让Chromium在你的winform或WPF里面跑起来,以下CefSharp版本号为CefSharp47
CefSettings setting = new CefSharp.CefSettings();
// 设置语言
setting.Locale = "zh-CN";
setting.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64)";
//缓存路径
setting.CachePath = AppDomain.CurrentDomain.BaseDirectory + "cache//";
setting.PersistSessionCookies = false;
CefSharp.Cef.Initialize(setting, true, false);
//cookie保存路径
string cookieDirec = AppDomain.CurrentDomain.BaseDirectory + "cache//cookie//";
//如果需要缓存Cookie不要后面这句
if (Directory.Exists(cookieDirec)) Directory.Delete(cookieDirec, true);
ICookieManager cookieManager = CefSharp.Cef.GetGlobalCookieManager();
cookieManager.SetStoragePath(cookieDirec, false);
ChromiumWebBrowser cef = null;
//传入主窗体 public void Load(ref ChromiumWebBrowser browser) { cef = browser; }
CefReturnValue IRequestHandler.OnBeforeResourceLoad(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback) { var frm = cef.GetBrowser().MainFrame; var req = frm.CreateRequest(true); if (request.PostData != null && request.PostData.Elements != null) foreach (var item in request.PostData.Elements) req.PostData.AddElement(item); req.Method = request.Method; req.SetReferrer(request.ReferrerUrl, request.ReferrerPolicy); req.Url = request.Url; frm.LoadRequest(req); return CefReturnValue.Cancel; }
2.重写ILifeSpanHandler 重写OnBeforePopup方法
ChromiumWebBrowser cef = null;
//传入主窗体
public void Load(ref ChromiumWebBrowser browser)
{
cef = browser;
}
public bool OnBeforePopup(IWebBrowser browserControl, IBrowser browser,
IFrame frame, string targetUrl, string targetFrameName,
WindowOpenDisposition targetDisposition, bool userGesture,
IWindowInfo windowInfo, ref bool noJavascriptAccess, out IWebBrowser newBrowser)
{
newBrowser = null;
var wbHide = new ChromiumWebBrowser("about:blank");
var handler= new YsRequestHandler();
handler.Load(ref cef);
wbHide.RequestHandler = handler;
newBrowser = wbHide;
return false;//{false:允许新窗口,true:禁止新窗口}
}
3.加载ILifeSpanHandler
wb = new ChromiumWebBrowser("about:blank"); var handler = new YsLifeSpanHandler(); handler.Load(ref wb); wb.LifeSpanHandler = handler; wb.Dock = DockStyle.Fill; frm.Controls.Add(wb);
## 0X5 禁用右键菜单
重写 IContextMenuHandler
public bool RunContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model, IRunContextMenuCallback callback) { return true; }
```
参考DEMO GitHub Lozye