我正在尝试在WinForms中使用CefSharp v65加载本地html / css / js文件。
我发现了与此有关的其他堆栈溢出帖子,但没有一个使用新的内置版本FolderSchemeHandlerFactory,而是实现了自己的版本。这是我在Scheme Handler上阅读的文档:https : //github.com/cefsharp/CefSharp/wiki/General-Usage在“ Scheme Handler”标题下。
资料来源:在CefSharp中使用本地构建的网页
我尝试像这样使用新功能:
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;
}
Run Code Online (Sandbox Code Playgroud)
但是,我只是得到没有CSS的html,调试器中没有例外。有谁知道如何利用新的内置功能?
正如amaitland在评论中指出的那样,“当我加载数据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;
}
Run Code Online (Sandbox Code Playgroud)