zoukankan      html  css  js  c++  java
  • CEF内核浏览器安装、解决过滤图片、链接弹窗问题

    1、工具-NuGget-管理解决方案
    在这里插入图片描述
    2、在浏览中搜索cefsharp.winforms,选择第一个,并选择右下角的版本(我选择了47版本)
    在这里插入图片描述
    3、修改项目的平台目标为x86 解决方案-右键属性-选择配置属性-配置管理器-程序主项目选择x86
    在这里插入图片描述
    4、接下来可以开始写代码了,不详细写了,每个人要实现的功能不一样
    在这里插入图片描述
    5、这里涉及2个问题,一个是过滤图片,另一个是点击链接弹出窗口
    5.1、解决过滤图片,需要继承IRequestHandler接口,并重写OnBeforeResourceLoad(这种方法在47以上版本无法使用)

    public partial class requesthandler : IRequestHandler
    	    {
    	        public bool GetAuthCredentials(IWebBrowser browserControl, IBrowser browser, IFrame frame, bool isProxy, string host, int port, string realm, string scheme, IAuthCallback callback)
    	        {
    	            callback.Dispose();
    	            return false;
    	        }
    	
    	        public bool OnBeforeBrowse(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, bool isRedirect)
    	        {
    	            return false;
    	        }
    	        /// <summary>
    	        /// 过滤图片
    	        /// </summary>
    	        /// <returns></returns>
    	        public CefReturnValue OnBeforeResourceLoad(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback)
    	        {
    	            if (request.ResourceType == ResourceType.Image)//过滤图片
    	                return CefReturnValue.Cancel;
    	            return CefReturnValue.Continue;
    	        }
    	
    	        public bool OnCertificateError(IWebBrowser browserControl, IBrowser browser, CefErrorCode errorCode, string requestUrl, ISslInfo sslInfo, IRequestCallback callback)
    	        {
    	            if (!callback.IsDisposed)
    	            {
    	                using (callback)
    	                {
    	                    //To allow certificate
    	                    //callback.Continue(true);
    	                    //return true;
    	                }
    	            }
    	
    	            return false;
    	        }
    	
    	        public bool OnOpenUrlFromTab(IWebBrowser browserControl, IBrowser browser, IFrame frame, string targetUrl, WindowOpenDisposition targetDisposition, bool userGesture)
    	        {
    	            return false;
    	        }
    	
    	        public void OnPluginCrashed(IWebBrowser browserControl, IBrowser browser, string pluginPath)
    	        {
    	            //throw new NotImplementedException();
    	        }
    	
    	        public bool OnProtocolExecution(IWebBrowser browserControl, IBrowser browser, string url)
    	        {
    	            return false;
    	        }
    	
    	        public bool OnQuotaRequest(IWebBrowser browserControl, IBrowser browser, string originUrl, long newSize, IRequestCallback callback)
    	        {
    	            if (!callback.IsDisposed)
    	            {
    	                using (callback)
    	                {
    	                    //Accept Request to raise Quota
    	                    //callback.Continue(true);
    	                    //return true;
    	                }
    	            }
    	            return false;
    	        }
    	
    	        public void OnRenderProcessTerminated(IWebBrowser browserControl, IBrowser browser, CefTerminationStatus status)
    	        {
    	            //throw new NotImplementedException();
    	        }
    	
    	        public void OnRenderViewReady(IWebBrowser browserControl, IBrowser browser)
    	        {
    	            //throw new NotImplementedException();
    	        }
    	
    	        public void OnResourceLoadComplete(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IResponse response, UrlRequestStatus status, long receivedContentLength)
    	        {
    	            //throw new NotImplementedException();
    	        }
    	
    	        public void OnResourceRedirect(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, ref string newUrl)
    	        {
    	            //throw new NotImplementedException();
    	        }
    	
    	        public boolOnResourceResponse(IWebBrowser browserControl,IBrowser browser,IFrame frame,IRequest request,IResponse response){//throw new NotImplementedException();returnfalse;}}
    5.2、点击链接弹出窗口,需要继承ILifeSpanHandler接口,并重写OnBeforePopup
     /// <summary>
    	    /// 在自己窗口打开链接
    	    /// </summary>
    	    public class OpenPageSelf : ILifeSpanHandler
    	    {
    	        public bool DoClose(IWebBrowser browserControl, IBrowser browser)
    	        {
    	            return false;
    	        }
    	
    	        public void OnAfterCreated(IWebBrowser browserControl, IBrowser browser)
    	        {
    	            //throw new System.NotImplementedException();
    	        }
    	
    	        public void OnBeforeClose(IWebBrowser browserControl, IBrowser browser)
    	        {
    	            //throw new System.NotImplementedException();
    	        }
    	
    	        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 chromiumWebBrowser = (ChromiumWebBrowser)browserControl;
    	            chromiumWebBrowser.Load(targetUrl);
    	            return true; //Return true to cancel the popup creation copyright by codebye.com.
    	        }

     

  • 相关阅读:
    golang包管理工具glide安装
    kafka单机安装和启动
    python爬虫得到unicode编码处理方式
    束带结发洛杉矶到付款啦就是的开发
    是的发送到
    【业务】
    下载
    Peach+Fuzzer
    【Selenium】IE浏览器启动问题
    TestNG
  • 原文地址:https://www.cnblogs.com/soundcode/p/14927191.html
Copyright © 2011-2022 走看看