使用 CefSharp v65 加载本地 html/css/js 文件

Loading local html/css/js files with CefSharp v65

我正在尝试在 WinForms 中使用 CefSharp v65 加载本地 html/css/js 文件。

我发现了其他与此相关的堆栈溢出帖子,但其中 none 使用了 FolderSchemeHandlerFactory 的新 built-in 版本,而不是实现了他们自己的版本。这是我在 Scheme Handler 上阅读的文档:https://github.com/cefsharp/CefSharp/wiki/General-Usage under the "Scheme Handler" header.

来源:

我试过像这样使用新功能:

    public ChromiumWebBrowser browser;

    public void InitBrowser()
    {            
        var settings = new CefSettings();
        settings.RegisterScheme(new CefCustomScheme
        {
            SchemeName = "localfolder",
            SchemeHandlerFactory = new FolderSchemeHandlerFactory(
                rootFolder: @"..\..\..\..\CEFSharpExample\webpage",
                defaultPage: "index.html" // default
            )
        });

        Cef.Initialize(settings);

        string html = File.ReadAllText(@"..\..\..\webpage\index.html");
        browser = new ChromiumWebBrowser();
        browser.LoadHtml(html);
        this.Controls.Add(browser);
        browser.Dock = DockStyle.Fill;

    }

但是,我只是得到 html 而没有 css,在调试器中没有异常。有人了解如何利用新的 built-in 功能吗?

正如 amaitland 在评论中指出的,我的 "requests weren't being made to the scheme handler as [I was] loading a data URI"。

我更新后的工作代码如下(如果您想知道一切发生在哪里,会更加充实):

public partial class Form1 : Form
{
    InitializeComponent();
    InitBrowser();
}

public ChromiumWebBrowser browser;

public void InitBrowser()
{
    var settings = new CefSettings();

    settings.RegisterScheme(new CefCustomScheme
    {
        SchemeName = "localfolder",
        DomainName = "cefsharp",
        SchemeHandlerFactory = new FolderSchemeHandlerFactory(
            rootFolder: @"C:\CEFSharpExample\webpage",
            hostName: "cefsharp",
            defaultPage: "index.html" // will default to index.html
        )
    });

    Cef.Initialize(settings);

    browser = new ChromiumWebBrowser("localfolder://cefsharp/");

    this.Controls.Add(browser);
    browser.Dock = DockStyle.Fill;   
}