delphi - 如何使用 Chromium Embedded (CEF) 加载本地 html 文件?
问题描述
我想将一个 html 文件加载到Chromium(CEF4Delphi)中,但没有显示任何内容,只有一个白页。
是否可以使用以下方法加载本地 html 文件?
这是html文件。
还有其他问题,即每次执行 Chromium 时,也会执行我的应用程序的其他实例。如何解决这个问题?
使用的代码:
var
Form1: TForm1;
FStarted: Boolean;
implementation
{$R *.dfm}
function CEFApplication: TCefApplication;
var
sPath: String;
begin
sPath := ExtractFilePath(ParamStr(0));
if not assigned(GlobalCEFApp) then
begin
GlobalCEFApp := TCefApplication.Create;
GlobalCEFApp.FlashEnabled := False;
GlobalCEFApp.FastUnload := True;
GlobalCEFApp.FrameworkDirPath := sPath + 'cef';
GlobalCEFApp.ResourcesDirPath := sPath + 'cef';
GlobalCEFApp.LocalesDirPath := sPath + 'cef\locales';
GlobalCEFApp.Cache := sPath + 'cef\cache';
GlobalCEFApp.Cookies := sPath + 'cef\cookies';
GlobalCEFApp.UserDataPath := sPath + 'cef\User Data';
GlobalCEFApp.EnableGPU := False;
end;
if not FStarted then
FStarted := GlobalCEFApp.StartMainProcess;
result := GlobalCEFApp;
end;
initialization
CEFApplication;
end.
表格2:
procedure TForm2.FormShow(Sender: TObject);
begin
while not(Chromium1.CreateBrowser(CEFWindowParent1, '')) and
(Chromium1.Initialized) do
begin
Sleep(100);
Application.processMessages;
end;
Chromium1.LoadURL(ExtractFilePath(ExtractFilePath(Application.ExeName)) + 'gmaps.html');
end;
版:
相对于我对正在执行的应用程序的多个实例的怀疑,这是正常且正确的,基于本文 。
解决方案
这就是我在代码中的做法:
CBrowser.Load('file:///' + ReplaceStr(fpath, '\', '/'));
推荐阅读
- selenium-chromedriver - Chrome 版本 65 的 Chrome 驱动程序
- python - Django - 在创建用户时对配置文件执行操作
- python - 如何正确关闭包含 matplotlib 动画图表的 tk.Toplevel
- reactjs - 将 .NET Core 3.1 Web API 与 React App 集成为 MVC 应用程序
- javascript - 如何从动态复选框中选择单个复选框
- apache-spark - EMR-5.32.0 上的 Spark 未生成请求的执行程序
- jsf - 如何重置 PrimeFaces 动态列的排序?
- sql-server - 包含嵌套对象的 XML 存在问题到 POCO(反)序列化(VB.Net)
- python - 获取TypeError:**或pow()不支持的操作数类型:'builtin_function_or_method'和'int'在Python中求解方程时
- postgresql - 编写一个触发器函数以根据 postgresql 中同一表中的另一个列值更新列值