1

私が発行するとき

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

OnLoadEndイベントが以前のHTMLをロードすることがあるようですLoadString(複数のフレームが別々にロードされている可能性があります)。

使ってます

if not frame.IsMain then
  Exit;

メインフレームのみがで考慮されていることを確認しますが、が以前にロードされたページ(HTML)のビットマップを返すOnLoadEnd場合があります。CefGetBitmap

OnLoadEnd私の質問: ChromiumFMXコンポーネントがすでに正しいページを表示しているときにトリガーされることをどのように知ることができますか?

4

2 に答える 2

0

HTMLが非常に簡潔(小さい)の場合、HTMLは非常に高速にロードされOnLoadEnd、ChromiumFMXコンポーネントが更新される前にイベントがトリガーされます。OnLoadEndChromiumFMXコンテンツを処理するには、手順が完了するまで待ちます。これは、たとえば、ループで完了するのを待つことで実現できます。

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 に答える
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 に答える