FAQ VCL
Компоненты\Chromium (dcef3)

:: Меню ::
:: На главную ::
:: FAQ ::
:: Заметки ::
:: Практика ::
:: Win API ::
:: Проекты ::
:: Скачать ::
:: Секреты ::
:: Ссылки ::

:: Сервис ::
:: Написать ::

:: MVP ::

:: RSS ::

Яндекс.Метрика

Как реализовать поиск на странице?

uses
  {...,} ceflib;

procedure TForm1.Button1Click(Sender: TObject);
var
  SearchId: Integer;
  SearchText: ustring;
begin
   SearchId := 0;
   SearchText := 'some text';
   Chromium1.Browser.Host.Find(SearchId, SearchText, True, False, False);
end;


Как скрыть контекстное меню?

procedure TForm1.Chromium1BeforeContextMenu(Sender: TObject;
  const browser: ICefBrowser; const frame: ICefFrame;
  const params: ICefContextMenuParams; const model: ICefMenuModel);
begin
   model.Clear;
end;


Как включить поддержку Flash?

uses
  {...,} ceflib;

procedure OnBeforeCommandLineProcessing(const processType: ustring;
  const commandLine: ICefCommandLine);
begin
   commandLine.AppendSwitch('enable-system-flash');
end;

initialization
  CefOnBeforeCommandLineProcessing := OnBeforeCommandLineProcessing;

// Если не нужно использовать системный плагин, можно написать следующее:
// commandLine.AppendSwitchWithValue('ppapi-flash-path', 'путь к плагину pepflashplayer.dll');
// commandLine.AppendSwitchWithValue('ppapi-flash-version', 'его версия');


Как нажать кнопку в TChromium?

procedure TForm1.FormCreate(Sender: TObject);
const
  Content = '<html>' +
            '   <body>' +
            '      <input type="button" value="button" id="btn" onclick="alert('123')">' +
            '   </body>' +
            '</html>';
var
  CodeStr: string;
begin
   Chromium1.Browser.MainFrame.LoadString(Content, 'http://none.ru');
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  CodeStr: string;
begin
   if Assigned(Chromium1.Browser) and Assigned(Chromium1.Browser.Mainframe) then
   begin
      CodeStr := 'document.getElementById("btn").click();';
      Chromium1.Browser.MainFrame.ExecuteJavaScript(CodeStr, 'about:blank', 0);
    end;
end;


Как запретить показ рекламы при загрузке сайта?

uses
  {...,} StrUtils;

procedure TForm1.Chromium1BeforeResourceLoad(Sender: TObject;
  const browser: ICefBrowser; const frame: ICefFrame;
  const request: ICefRequest; const callback: ICefRequestCallback;
  out Result: TCefReturnValue);
begin
   Result := RV_CONTINUE;
   if (PosEx('advmaker', request.Url) > 0) or
      (PosEx('directadvert', request.Url) > 0) or
      (PosEx('pagead2.googlesyndication.com', request.Url) > 0) then
      Result := RV_CANCEL;
end;


Как скрыть/показать элемент на странице?

procedure TForm1.FormCreate(Sender: TObject);
const
  Content = '<html>' +
            '   <body>' +
            '      <input type="button" value="button" id="btn" onclick="alert('123')">' +
            '   </body>' +
            '</html>';
var
  CodeStr: string;
begin
   Chromium1.Browser.MainFrame.LoadString(Content, 'http://none.ru');
end;

// Скрыть элемент
procedure TForm1.Button1Click(Sender: TObject);
var
  CodeStr: string;
begin
   if Assigned(Chromium1.Browser) and Assigned(Chromium1.Browser.Mainframe) then
   begin
      CodeStr := 'var b = document.getElementById("btn"); if (b) {b.style.display="none";}';
      Chromium1.Browser.MainFrame.ExecuteJavaScript(CodeStr, 'about:blank', 0);
    end;
end;

// Показать элемент
procedure TForm1.Button6Click(Sender: TObject);
var
  CodeStr: string;
begin
   if Assigned(Chromium1.Browser) and Assigned(Chromium1.Browser.Mainframe) then
   begin
      CodeStr := 'var b = document.getElementById("btn"); if (b) {b.style.display="";}';
      Chromium1.Browser.MainFrame.ExecuteJavaScript(CodeStr, 'about:blank', 0);
    end;
end;


Как удалить элемент со страницы?

procedure TForm1.FormCreate(Sender: TObject);
const
  Content = '<html>' +
            '   <body>' +
            '      <input type="button" value="button" id="btn" onclick="alert('123')">' +
            '   </body>' +
            '</html>';
var
  CodeStr: string;
begin
   Chromium1.Browser.MainFrame.LoadString(Content, 'http://none.ru');
end;

// Удалить элемент
procedure TForm1.Button1Click(Sender: TObject);
var
  CodeStr: string;
begin
   if Assigned(Chromium1.Browser) and Assigned(Chromium1.Browser.Mainframe) then
   begin
      CodeStr := 'document.getElementById("btn").parentNode.removeChild(document.getElementById("btn"));';
      Chromium1.Browser.MainFrame.ExecuteJavaScript(CodeStr, 'about:blank', 0);
    end;
end;


Как изменить масштаб страницы?

// Уменьшить масштаб
procedure TForm1.SB_ZoomOutClick(Sender: TObject);
begin
   Chromium1.Browser.Host.ZoomLevel := Chromium1.Browser.Host.ZoomLevel - 0.5;
end;

// Восстановить масштаб "по умолчанию"
procedure TForm1.SB_ZoomDefaultClick(Sender: TObject);
begin
   Chromium1.Browser.Host.ZoomLevel := 0;
end;

// Увеличить масштаб
procedure TForm1.SB_ZoomInClick(Sender: TObject);
begin
   Chromium1.Browser.Host.ZoomLevel := Chromium1.Browser.Host.ZoomLevel + 0.5;
end;


Как обновить страницу?

type
  TMainForm = class(TForm)
  {...}
  private
    FLoading: Boolean;
  end;

implementation

procedure TForm1.Chromium1LoadStart(Sender: TObject; const browser: ICefBrowser;
  const frame: ICefFrame);
begin
   FLoading := True;
end;

procedure TForm1.Chromium1LoadEnd(Sender: TObject; const browser: ICefBrowser;
  const frame: ICefFrame; httpStatusCode: Integer);
begin
   FLoading := False;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   if Chromium1.Browser <> nil then
   begin
      if FLoading then
         Chromium1.Browser.StopLoad;
      Chromium1.Browser.Reload;
   end;
end;


Как показать текст страницы без тегов?

uses
  {...,} ceflib;

procedure TForm1.Button1Click(Sender: TObject);
begin
   Chromium1.Browser.MainFrame.GetTextProc(procedure (const src: ustring)
      var
        source: ustring;
      begin
         source := src;
         source := StringReplace(source, '<', '&lt;', [rfReplaceAll]);
         source := StringReplace(source, '>', '&gt;', [rfReplaceAll]);
         source := '<html><body>Text:<pre>' + source + '</pre></body></html>';
         Form1.Chromium1.Browser.MainFrame.LoadString(source, 'source://html');
      end);
end;

При использовании материала - ссылка на сайт обязательна