关于CefSharp使用的一些备忘
Posted new-class
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于CefSharp使用的一些备忘相关的知识,希望对你有一定的参考价值。
相关资料:how-to-use-cefsharp-chromium-embedded-framework-csharp-in-a-winforms-application
一、安装及设置
1、引入
通过NuGet package搜索CefSharp (安装:CefSharp.WinForms)
当前版本:75.1.143,.net框架需要4.5.2或以上
2、建议重启下项目
3、设置any cpu
1)项目-属性-生成-首选32位
2)文件<your-project-name>/<your-project-name>/your-project-name.csproj中,第一个<PropertyGroup>节点内,加入<CefSharpAnyCpuSupport>true</CefSharpAnyCpuSupport>
3)App.config文件<configuration>节点内加入
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <probing privatePath="x86"/> </assemblyBinding> </runtime>
二、基本使用
1、初始化及加载
public ChromiumWebBrowser chromeBrowser; public void InitializeChromium() { CefSettings settings = new CefSettings();
settings.Locale = "zh-CN";//界面中文化,例如右键菜单
settings.AcceptLanguageList="zh-CN";//HTTP Header Accept-Language Cef.Initialize( settings ); chromeBrowser = new ChromiumWebBrowser( "http://www.baidu.com" );// this.Controls.Add( chromeBrowser ); chromeBrowser.Dock = DockStyle.Fill; chromeBrowser.FrameLoadStart += new EventHandler<FrameLoadStartEventArgs>( FrameStartFunction );//加载开始事件 chromeBrowser.FrameLoadEnd += new EventHandler<FrameLoadEndEventArgs>( FrameEndFunction );//加载完成事件 } public Form1() { InitializeComponent(); InitializeChromium();//初始化浏览器 } private void UpdateLabel( object str ) { if ( label1.InvokeRequired ) { BeginInvoke( new Action<string>( x => { label1.Text = x.ToString(); } ), str ); } } private void FrameEndFunction( object sender, FrameLoadEndEventArgs e ) { Thread thread1 = new Thread( UpdateLabel );//由于事件是CEF的UI线程发出的,需要更新应用UI控件需要异步执行委托 thread1.Start( "页面加载完成" ); } private void FrameStartFunction( object sender, FrameLoadStartEventArgs e ) { Thread thread1 = new Thread( UpdateLabel ); thread1.Start( "页面加载中..." ); } private void Form1_FormClosing( object sender, FormClosingEventArgs e ) { Cef.Shutdown(); }
2、调用JS
string fun="alert(‘demo‘)"; Task<CefSharp.javascriptResponse> t = chromeBrowser.EvaluateScriptAsync(fun); t.Wait(); if (!t.IsFaulted && t.Result.Success == true) { //var res=t.Result.Result; //t.Result.Result是object类型,如果js返回是一个数组,则是object[],无返回值的js则为null //todo }
3、其他常用备忘
chromeBrowser.Reload();//刷新(会读缓存) chromeBrowser.Reload(false);//彻底刷新 chromeBrowser.Load("http://www.baidu.com")//加载指定页面 var res =await chromeBrowser.GetSourceAsync();//读取源码
以上是关于关于CefSharp使用的一些备忘的主要内容,如果未能解决你的问题,请参考以下文章