加载网络页面
static ChromiumWebBrowser web;
private void Browserform_Load(object sender, EventArgs e)
{
try
{
web = new ChromiumWebBrowser("www.baidu.com");
web.Dock = DockStyle.Fill;
web.RequestHandler = re;
web.FrameLoadStart += Web_FrameLoadStart;
web.FrameLoadEnd += Web_FrameLoadEnd;
web.LoadingStateChanged += Web_LoadingStateChanged;
this.Invoke(new Action(() =>
{
this.Controls.Add(web);
}));
//browser表示你的CefSharp对象使用它的RegisterJsObject来绑定你的.net类
web.RegisterJsObject("bound", new BoundObject());
//在实际的JS代码中,你将使用这样的对象:
//bound.myProperty; // 使用此语法访问属性
//bound.myMethod(); // 使用此调用方法。
}
catch (Exception ex)
{
// MessageBox.Show(ex.ToString());
}
js前台事件执行后台方法
记录工作使用心得。
使用过程中想用js调用后台事件,如果做那?
不像正常接口可以直接调用访问。其实这个问题CEFSharp的设计者们,早就想好了。
那就是通过调用 JavascriptResponse 类来执行后台时间。
你可以在代码中load js 到浏览器中。js内容调用你的后台事件。 下面就是一个简单的列子。
示例代码均已上传github git地址
static ChromiumWebBrowser web;
private void Browserform_Load(object sender, EventArgs e)
{
try
{
web = new ChromiumWebBrowser("www.baidu.com");
web.Dock = DockStyle.Fill;
web.RequestHandler = re;
web.FrameLoadStart += Web_FrameLoadStart;
web.FrameLoadEnd += Web_FrameLoadEnd;
web.LoadingStateChanged += Web_LoadingStateChanged;
this.Invoke(new Action(() =>
{
this.Controls.Add(web);
}));
//browser表示你的CefSharp对象使用它的RegisterJsObject来绑定你的.net类
web.RegisterJsObject("bound", new BoundObject());
//在实际的JS代码中,你将使用这样的对象:
//bound.myProperty; // 使用此语法访问属性
//bound.myMethod(); // 使用此调用方法。
}
catch (Exception ex)
{
// MessageBox.Show(ex.ToString());
}
将js事件通过注册进入页面,通过
bound.myMethod(); 访问后台方法。
bound.MyProperty 访问后台属性。
private async Task initmethodAsync()
{
string js_func = "";
js_func += " var all = $(\"div[class='ng-scope']\"); for (i = 0; i < all.length; i++) { all[i].onclick = onNickName; }";
js_func += " function onNickName() {bound.myMethod($(this).find('span').eq(0).text(),$(this).find('img').eq(0).attr('src'));}; ";
JavascriptResponse x = await web.EvaluateScriptAsync(js_func);
}
C# 事件响应类:
public class BoundObject
{
public string MyProperty { get; set; }
public void MyMethod(string ShowNickName,string html)
{
try
{
Console.WriteLine("我来响应前台的的事件");
}
catch (Exception ex)
{
}
}
}
下载文件 弹出保存框 IDownloadHandler
最近一直在做CEFsharp 方面的,遇到了下载文件的无法保存的问题 。 记录解决下。 主要是应用了
IDownloadHandler
调用方法:
web.MenuHandler = new MyWebContextMenu();
web.DownloadHandler = new MyDownLoadFile();
/// <summary>
/// 下载文件
/// </summary>
public class MyDownLoadFile : IDownloadHandler
{
public void OnBeforeDownload(IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback)
{
if (!callback.IsDisposed)
{
using (callback)
{
callback.Continue(@"C:\Users\" +
System.Security.Principal.WindowsIdentity.GetCurrent().Name+
@"\Downloads\" +
downloadItem.SuggestedFileName,
showDialog: true);
}
}
}
public void OnDownloadUpdated(IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback)
{
//downloadItem.IsCancelled = false;
}
public bool OnDownloadUpdated(CefSharp.DownloadItem downloadItem)
{
return false;
}
}
cefsharp 调用F12 审查元素功能
private void button1_Click_1(object sender, EventArgs e)
{
web.ShowDevTools();
}
CEFSharp 隔离Cookie
怎么隔离那?最近做项目中一直不甘心使用程序应用域隔离的办法,终于找到了可以实现的办法
提出来做个笔记: 红色部分关键的四句话。

本文详细介绍了如何在CEFSharp中进行各种操作,包括加载网络页面,实现js前台事件调用后台方法,使用IDownloadHandler弹出下载保存框,启用F12审查元素功能,隔离Cookie,拦截HTTP和WebSocket请求,以及设置代理更换IP。此外,还展示了如何抓取web微信好友信息。
最低0.47元/天 解锁文章

2万+

被折叠的 条评论
为什么被折叠?



