使用 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;
}
我正在尝试在 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;
}