【CefSharp】CefSharp.WinForms.ChromiumWebBrowser相关配置

ChromiumWebBrowser

CefSharp.WinForms.ChromiumWebBrowser是一个基于CefSharp的.NET WinForms控件,用于在Windows应用程序中嵌入Chromium浏览器。以下是如何使用CefSharp.WinForms.ChromiumWebBrowser的一个基本示例:

首先,确保已经安装了CefSharp库。如果还没有安装,可以通过NuGet包管理器来安装。

using CefSharp.WinForms;
using System.Windows.Forms;
 
public class BrowserExample
{
    private ChromiumWebBrowser browser;
 
    public void InitBrowser()
    {
        Cef.Initialize(new CefSettings()); // 初始化CEF
 
        browser = new ChromiumWebBrowser("www.google.com"); // 创建浏览器实例并导航到Google
        browser.Dock = DockStyle.Fill; // 让浏览器填充其父容器
 
        // 创建一个窗体并将浏览器控件添加到窗体中
        var form = new Form();
        form.Controls.Add(browser);
        form.Width = 800;
        form.Height = 600;
        form.IsMdiContainer = true;
        form.Show();
    }
}

在实际的应用程序中,你可能需要处理更多的事件,例如导航事件、JavaScript互操作性等。CefSharp文档中提供了详细的指南和示例代码。

以下是一些常用的属性和方法:

  1. Address:获取或设置当前导航到的URL。
  2. Load:加载指定的URL。
  3. BackForward:浏览器历史记录中后退和前进。
  4. Reload:重新加载当前页面。
  5. Stop:停止加载当前页面。
  6. RegisterJsObject:注册一个对象,使其可以在JavaScript中访问。
  7. GetBrowser:获取与ChromiumWebBrowser关联的IBrowser实例。
  8. GetFocusedFrame:获取获得焦点的Frame。
  9. RequestHandler:获取或设置自定义的IRequestHandler
  10. MenuHandler:获取或设置自定义的右键菜单处理程序。
  11. LifeSpanHandler:获取或设置自定义的生命周期处理程序。
  12. LoadHandler:获取或设置自定义的加载处理程序。
  13. DownloadHandler:获取或设置自定义的下载处理程序。
  14. JsDialogHandler:获取或设置自定义的JavaScript对话框处理程序。
  15. DragHandler:获取或设置自定义的拖放处理程序。
  16. KeyboardHandler:获取或设置自定义的键盘处理程序。

以下是一个简单的使用示例:

using CefSharp;
using CefSharp.WinForms;
 
public class ChromiumWebBrowserExample
{
    private ChromiumWebBrowser browser;
 
    public ChromiumWebBrowserExample()
    {
        browser = new ChromiumWebBrowser("https://www.example.com");
 
        // 设置浏览器的地址
        browser.Address = "https://www.google.com";
 
        // 加载页面
        browser.Load("http://www.bing.com");
 
        // 后退
        browser.Back();
 
        // 前进
        browser.Forward();
 
        // 注册一个名为boundObj的JavaScript对象
        browser.RegisterJsObject("boundObj", new BoundObject());
 
        // ... 其他操作
    }
 
    public class BoundObject
    {
        public string TestFunction()
        {
            return "Test";
        }
    }
}

请注意,CefSharp在不同的版本中可能会有一些API的变化,请参考最新的官方文档或源代码注释以获取最准确的信息。

以下是一些常用的CefSharp.WinForms.ChromiumWebBrowser方法:

  1. Load():加载指定的URL。
browser.Load("http://www.google.com");
  1. LoadHtml():加载HTML内容。
browser.LoadHtml("<h1>Hello, World!</h1>");
  1. ExecuteScriptAsync():异步执行JavaScript代码。
browser.ExecuteScriptAsync("alert('Hello, World!');");
  1. RegisterJsObject():向浏览器注册一个可由JavaScript访问的对象。
browser.RegisterJsObject("exposedObject", new ExposedObject());
  1. GetBrowser():获取与ChromiumWebBrowser关联的CefSharp.IBrowser实例。
var browser = myChromiumWebBrowser.GetBrowser();
  1. GetFrame():获取与ChromiumWebBrowser关联的特定框架(通常是主框架)。
var frame = browser.GetFrame("mainFrame");
  1. GetSourceAsync():异步获取当前页面的HTML源代码。
var source = await browser.GetSourceAsync();
  1. GetZoomLevel()和SetZoomLevel():获取和设置页面缩放级别。
var zoomLevel = browser.GetZoomLevel();browser.SetZoomLevel(2.0);
  1. Back()和Forward():浏览器历史记录中后退和前进。
browser.Back();browser.Forward();
  1. Refresh():刷新当前页面。
browser.Refresh();
  1. Stop():停止加载当前页面。
browser.Stop();
  1. Undo()和Redo():撤销和重做操作。
browser.Undo();browser.Redo();
  1. Cut()、Copy()、Paste()和Delete():剪切、、粘贴和删除操作。
browser.Cut();browser.Copy();browser.Paste();browser.Delete();
  1. SelectAll():选择当前页面的所有文本。
browser.SelectAll();
  1. Print():打印当前页面。
browser.Print();
  1. Find():在页面上查找指定的文本。
browser.Find(0, "searchText", true, false, false);
  1. ViewSource():查看当前页面的源代码。
browser.ViewSource();

这些方法可以满足大多数浏览器嵌入和交互的需求。

以下是一些常用的事件及其使用示例:

  1. FrameLoadStart:当浏览器开始加载一个新的页面时触发。
browser.FrameLoadStart += (sender, args) => {// 处理页面开始加载的事件};
  1. FrameLoadEnd:当浏览器完成页面的加载时触发。
browser.FrameLoadEnd += (sender, args) => {// 处理页面加载完成的事件};
  1. LoadingStateChanged:当浏览器的加载状态发生变化时触发。
browser.LoadingStateChanged += (sender, args) => {// 处理加载状态改变的事件};
  1. AddressChanged:当浏览器的URL发生变化时触发。
browser.AddressChanged += (sender, args) => {// 处理URL改变的事件};
  1. StatusMessage:当浏览器接收到状态栏信息时触发。
browser.StatusMessage += (sender, args) => {// 处理状态栏信息的事件};
  1. TitleChanged:当浏览器的页面标题发生变化时触发。
browser.TitleChanged += (sender, args) => {// 处理标题改变的事件};
  1. ConsoleMessage:当浏览器的控制台有新消息时触发。
browser.ConsoleMessage += (sender, args) => {// 处理控制台消息的事件};

这些事件可以帮助你监控和响应浏览器在不同阶段的行为。记得在适当的生命周期事件中(如窗体的Load事件)或者其他适当的时机注册这些事件的监听器。

BrowserSettings

CefSharp.WinForms.ChromiumWebBrowser.BrowserSettings 是一个类,用于设置 CefSharp 中 ChromiumWebBrowser 控件的浏览器设置。

以下是如何使用它的一个基本示例:

using CefSharp;
using CefSharp.WinForms;
 
// 创建 ChromiumWebBrowser 实例
ChromiumWebBrowser browser = new ChromiumWebBrowser("www.google.com");
 
// 获取浏览器的设置
BrowserSettings browserSettings = new BrowserSettings();
 
// 设置一些基本的浏览器设置
browserSettings.FileAccessFromFileUrls = CefState.Enabled;
browserSettings.WebSecurity = CefState.Disabled;
 
// 将设置应用到 ChromiumWebBrowser 控件
browser.BrowserSettings = browserSettings;

在这个例子中,我们创建了一个新的 ChromiumWebBrowser 实例,并为它设置了一些基本的浏览器属性,如允许从文件 URL 访问文件(FileAccessFromFileUrls)和禁用 Web 安全性(WebSecurity)。

请注意,CefSharp 是一个非官方的、第三方的 Chromium 版本,用于 .NET 平台。在使用 CefSharp 时,你需要确保它与你的项目兼容,并且已正确安装和配置。

RequestContext

在C#中,如果你想要使用ChromiumWebBrowser.RequestContext,你可能是在使用CefSharp库来创建一个Chromium浏览器的实例。RequestContext是一个类,它用于管理浏览器进程的请求设置,比如缓存、cookie和代理设置等。

以下是如何使用RequestContext的一个基本示例:

// 创建RequestContextSettings对象
var requestContextSettings = new CefSharp.RequestContextSettings
{
    PersistSessionCookies = true,
    CachePath = "path/to/your/cache",
    // 其他设置...
};
 
// 创建RequestContext
var requestContext = new CefSharp.RequestContext(requestContextSettings);
 
// 创建ChromiumWebBrowser实例,并将RequestContext传递给它
var browser = new CefSharp.WinForms.ChromiumWebBrowser("www.example.com", requestContext: requestContext);

在这个例子中,我们首先创建了一个RequestContextSettings对象,并设置了一些选项,比如是否持久化会话Cookies以及缓存的路径。然后我们使用这个设置对象创建了一个RequestContext。最后,在创建ChromiumWebBrowser时,我们将RequestContext传递给它,这样浏览器就会使用我们指定的设置。

请注意,这只是一个基础示例,根据你的具体需求,你可能需要设置更多的选项。此外,CefSharp的版本更新可能会改变API,所以请根据你实际使用的版本来查看相应的文档。

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容