1

当我发出

Chromium.Browser.MainFrame.LoadString(HTML,'code_url');

似乎该OnLoadEnd事件有时仍会加载我以前的 HTML LoadString(可能正在单独加载几个帧)。

我在用

if not frame.IsMain then
  Exit;

确保只考虑主框架OnLoadEnd,但在某些情况下 aCefGetBitmap返回先前加载的页面 (HTML) 的位图。

OnLoadEnd我的问题:当 ChromiumFMX 组件已经显示正确的页面时,我怎么知道被触发?

4

2 回答 2

0

如果您对此进行编码 ChromiumFMX.Browser.MainFrame.LoadString(HTML, 'code_url');

在回调过程中 TfrmChromiumThumbnailing.ChromiumLoadEnd(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; httpStatusCode: Integer; out Result: Boolean);

frame.url 将是“code_url”

于 2013-10-30T20:43:13.823 回答
0

当 HTML 非常简洁(小)时,加载速度非常快,并且OnLoadEnd在 ChromiumFMX 组件更新之前触发事件。要处理 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>
于 2012-08-26T15:32:13.850 回答