本文主要是介绍CefSharp之二--如何看懂demo中的例子,以及按照例子进行开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
CefSharp是做什么用的?请看前一篇文章:怎么用c#编写浏览器或者执行javascript代码?
之后就是如何开发了。这个CefSharp最坑的是,还早不到文档,只能看着官方给的例子开发。项目地址
那么就可以看到,带有example的都是例子。
我给大家举2个例子。
1.事件添加:我想让我的程序出了网页上的js代码,再额外的执行我自己写的js,怎么办呢?
InitializeComponent();Cef.Initialize(new CefSettings());browser = new ChromiumWebBrowser("https://www.baidu.com");this.Controls.Add(browser);//browser.Dock = DockStyle.Fill;执行js/browser.IsBrowserInitializedChanged += OnIsBrowserInitializedChanged;//添加事件
private void OnIsBrowserInitializedChanged(object sender, IsBrowserInitializedChangedEventArgs args){if (args.IsBrowserInitialized){browser.ExecuteScriptAsync("alert(1)");}}
这样就可以了。
2.我想获取浏览器发送的请求头信息,怎么办呢?
browser.RequestHandler = new myrequesthandler();
public class myrequesthandler : IRequestHandler{public bool GetAuthCredentials(IWebBrowser browserControl, IBrowser browser, IFrame frame, bool isProxy, string host, int port, string realm, string scheme, IAuthCallback callback){//MessageBox.Show("123");throw new NotImplementedException();}public bool OnBeforeBrowse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, bool isRedirect){MessageBox.Show(request.Headers.Get(1));return false;//throw new NotImplementedException();}public bool OnBeforePluginLoad(IWebBrowser browserControl, IBrowser browser, string url, string policyUrl, WebPluginInfo info){throw new NotImplementedException();}public CefReturnValue OnBeforeResourceLoad(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback){return CefReturnValue.Continue;//throw new NotImplementedException();}public bool OnCertificateError(IWebBrowser browserControl, IBrowser browser, CefErrorCode errorCode, string requestUrl, ISslInfo sslInfo, IRequestCallback callback){throw new NotImplementedException();}public bool OnOpenUrlFromTab(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, WindowOpenDisposition targetDisposition, bool userGesture){throw new NotImplementedException();}public void OnPluginCrashed(IWebBrowser browserControl, IBrowser browser, string pluginPath){throw new NotImplementedException();}public bool OnProtocolExecution(IWebBrowser browserControl, IBrowser browser, string url){throw new NotImplementedException();}public bool OnQuotaRequest(IWebBrowser browserControl, IBrowser browser, string originUrl, long newSize, IRequestCallback callback){throw new NotImplementedException();}public void OnRenderProcessTerminated(IWebBrowser browserControl, IBrowser browser, CefTerminationStatus status){throw new NotImplementedException();}public void OnRenderViewReady(IWebBrowser browserControl, IBrowser browser){//throw new NotImplementedException();}public void OnResourceRedirect(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, ref string newUrl){throw new NotImplementedException();}
这样就ok啦,github上的可能和之前的版本不太一样,继承IRequestHandler后再加上如上代码,可能有些函数或者函数中参数会出问题,那么就把所有函数删除了,然后右键
IRequestHandler,选择实现接口->实现接口,他就会自己实现接口。
不过接着运行还可能出一些错误,这时候就需要吧出错的函数中throw new NotImplementedException();注释掉,或者注释掉后给个返回值,比如return false;这样就差不多了。
今天介绍的是获取reuqest,至于response还需要笔者研究一下
这篇关于CefSharp之二--如何看懂demo中的例子,以及按照例子进行开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!