当我发出
时Chromium.Browser.MainFrame.LoadString(HTML,'code_url');
似乎OnLoadEnd
事件有时仍会加载我之前的LoadString
的HTML(可能会分别加载几个帧)。
我正在使用
if not frame.IsMain then
Exit;
确保只在OnLoadEnd
中考虑主框架,但有时候CefGetBitmap
会返回先前加载的页面(HTML)的位图。
我的问题:当ChromiumFMX组件已经显示正确的页面时,如何知道OnLoadEnd
被触发?
答案 0 :(得分:0)
当HTML非常简洁(小)时,它会非常快速地加载,并且在更新ChromiumFMX组件之前会触发OnLoadEnd
事件。
要处理ChromiumFMX内容,请等到OnLoadEnd
过程完成。例如,这可以通过等待它在循环中完成来实现。
procedure TfrmChromiumThumbnailing.ChromiumLoadEnd(Sender: TObject;
const browser: ICefBrowser; const frame: ICefFrame;
httpStatusCode: Integer; out Result: Boolean);
begin
if (frame <> nil) and frame.IsMain then
PageLoaded := True;
end;
在其他代码中:
PageLoaded := False;
ChromiumFMX.Browser.MainFrame.LoadString(HTML,'code_url');
while not PageLoaded do
Application.ProcessMessages;
<handle ChromiumFMX content>
答案 1 :(得分:0)
如果你编码这个 ChromiumFMX.Browser.MainFrame.LoadString(HTML,'code_url');
回调程序中的TfrmChromiumThumbnailing.ChromiumLoadEnd(Sender:TObject; const浏览器:ICefBrowser; const frame:ICefFrame; httpStatusCode:整数; out结果:布尔);
frame.url将是'code_url'