TWebBrowesr Вставить HTML-код в тело после навигации по локальному файлу - PullRequest
0 голосов
/ 29 апреля 2019

Я использую TWebBrowser в Delphi 10.x, я хочу перейти к локальному файлу, например index.html, который будет загружать html / js / css, он работает и загружается успешно.Теперь я хотел добавить к телу некоторый html-текст, но он не работает, ничего не произошло (без ошибок).

//Navigate to local file
   WebBrowser.Navigate(f);
//Writing a string to body
   with WebBrowser.Document as IHTMLDocument2 do
   begin
      WebBody := body;
      WebBody.insertAdjacentHTML('BeforeEnd', MyHTML);
   end;

Если я не перехожу к локальному файлу, а пишу весь HTML какстрока к нему,

    Navigate('about:blank', '', '', '', 'X-UA-Compatible: IE=edge,chrome=1');
   ...//write a initial html like above

, затем добавление текста с помощью WebBody.insertAdjacentHTML, все работает нормально.

Как я могу перемещаться по локальному файлу, а затем добавить текст в тело (предположим, что это чатприложение).

1 Ответ

0 голосов
/ 30 апреля 2019

Я обнаружил, что решение зависит от комментария @whosrdaddy, приведенного выше, но не использует OnDocumentComplete.

Я должен подождать, пока браузер завершит навигацию / обработку его

procedure WaitComplete; 
begin
    with WebBrowser do
      while Busy or (ReadyState <> READYSTATE_COMPLETE) do
      begin
        Vcl.Forms.Application.ProcessMessages;
      end;
end;

WebBrowser.Navigate(f);
WaitComplete;

...