:: MVP ::
|
|
:: RSS ::
|
|
|
Как загрузить страницу?
// Способ первый
procedure TForm1.Button1Click(Sender: TObject);
begin
Chromium1.Load('http://ya.ru');
// или так
// Chromium1.Browser.MainFrame.LoadUrl('http://ya.ru');
end;
// Способ второй
// загрузка локальной страницы
procedure TForm1.Button1Click(Sender: TObject);
begin
Chromium1.Load('file:///c:/local.html');
// или так
// Chromium1.Browser.MainFrame.LoadUrl('file:///c:/local.html');
end;
|
Как передать логин/пароль для авторизации?
procedure TForm1.Chromium1GetAuthCredentials(Sender: TObject;
const browser: ICefBrowser; const frame: ICefFrame; isProxy: Boolean;
const host: ustring; port: Integer; const realm, scheme: ustring;
const callback: ICefAuthCallback; out Result: Boolean);
begin
Callback.Cont(FUser, FPass);
Result := True;
end;
|
Как изменить папку, в которой должны храниться куки (cookies)?
uses
{...,} ceflib;
procedure TForm1.Button1Click(Sender: TObject);
var
CookieManager: ICefCookieManager;
CookiesPath: string;
begin
CookiesPath := ExtractFilePath(Application.ExeName) + 'Cookies';
CookieManager := TCefCookieManagerRef.Global(nil);
CookieManager.SetStoragePath(CookiesPath, False, nil);
Chromium1.Load('http://ya.ru');
end;
|
Как удалить куки (cookies)?
// Способ первый
uses
{...,} ceflib;
procedure TForm1.Button1Click(Sender: TObject);
var
CookieManager: ICefCookieManager;
begin
CookieManager := TCefCookieManagerRef.Global(nil);
if not CookieManager.DeleteCookies('', '', nil) then
raise Exception.Create('Кукисы не удалены!');
end;
// Способ второй
uses
{...,} ceflib;
// Нужно обойти все хранящиеся куки с помощью VisitAllCookiesProc
// и внутри visitor-а установить их свойство deleteCookie равным True
procedure TForm1.Button3Click(Sender: TObject);
var
CookieManager: ICefCookieManager;
begin
CookieManager := TCefCookieManagerRef.Global(nil);
CookieManager.VisitAllCookiesProc(
function(const name, value, domain, path: ustring; secure, httponly,
hasExpires: Boolean; const creation, lastAccess, expires: TDateTime;
count, total: Integer; out deleteCookie: Boolean): Boolean
begin
deleteCookie := True;
ShowMessage('Кукисы для домена ' + domain + ' удалены!');
end
);
end;
// name, value, domain, path, secure, httponly, hasExpires, creation, lastAccess, expires —
// свойства объекта класса TCefCookie;
// count — индекс "текущего" cookie;
// total — общее количество кукисов;
// deleteCookie — если установите True, то "текущий" кукис будет удален.
// Способ третий
// Если место хранения куков устанавлено принудительно с помощью SetStoragePath,
// то можно удалить все содержимое этой папки.
|
Как заставить TChromium игнорировать ошибки SSL?
// Способ первый
// В dpr до вызова CefLoadLibDefault
program Project1;
uses
{...,} ceflib;
{$R *.res}
begin
CefIgnoreCertificateErrors := True;
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
// Способ второй
procedure TForm1.Chromium1CertificateError(Sender: TObject;
const browser: ICefBrowser; certError: Integer; const requestUrl: ustring;
const sslInfo: ICefSslInfo; const callback: ICefRequestCallback;
out Result: Boolean);
begin
callback.Cont(True);
Result := True;
end;
|
Как изменить User-Agent?
// В dpr до вызова CefLoadLibDefault
program Project1;
uses
{...,} ceflib;
{$R *.res}
begin
CefUserAgent := 'My User Agent';
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
|
Как программно заполнить и отправить форму?
procedure TForm1.FormCreate(Sender: TObject);
const
Content = '<html>' +
' <body>' +
' <form name="loginform" id="loginform">' +
' <input type="text" name="login" id="login" />' +
' <input type="password" name="password" id="password" />' +
' <input type="submit" value="Войти" />' +
' </form>' +
' </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.forms[0].login.value="UserLogin";';
Chromium1.Browser.MainFrame.ExecuteJavaScript(CodeStr, 'about:blank', 0);
CodeStr := 'document.forms[0].password.value="UserPass";';
Chromium1.Browser.MainFrame.ExecuteJavaScript(CodeStr, 'about:blank', 0);
CodeStr := 'document.forms[0].submit();';
Chromium1.Browser.MainFrame.ExecuteJavaScript(CodeStr, 'about:blank', 0);
end;
end;
|
Как получить результат выполнения JavaScript'а?
// Способ первый
// Вывести результат в сообщении
procedure TForm1.Button1Click(Sender: TObject);
var
CodeStr: string;
begin
if Assigned(Chromium1.Browser) and Assigned(Chromium1.Browser.Mainframe) then
begin
CodeStr := 'alert("123");';
Chromium1.Browser.MainFrame.ExecuteJavaScript(CodeStr, 'about:blank', 0);
end;
end;
procedure TForm1.Chromium1Jsdialog(Sender: TObject; const browser: ICefBrowser;
const originUrl, acceptLang: ustring; dialogType: TCefJsDialogType;
const messageText, defaultPromptText: ustring; callback: ICefJsDialogCallback;
out suppressMessage, Result: Boolean);
begin
case dialogType of
JSDIALOGTYPE_ALERT: Caption := '[ALERT] ' + messageText;
JSDIALOGTYPE_CONFIRM: Caption := '[CONFIRM] ' + messageText;
JSDIALOGTYPE_PROMPT: Caption := '[PROMPT] ' + messageText;
end;
// Подавить вывод сообщения можно одним из двух способов:
// • suppressMessage := True;
// • Result := True;
Result := True;
end;
// Способ второй
// Вывести результат в консоли
procedure TForm1.Button1Click(Sender: TObject);
var
CodeStr: string;
begin
if Assigned(Chromium1.Browser) and Assigned(Chromium1.Browser.Mainframe) then
begin
CodeStr := 'console.log("123");';
Chromium1.Browser.MainFrame.ExecuteJavaScript(CodeStr, 'about:blank', 0);
end;
end;
procedure TForm1.Chromium1ConsoleMessage(Sender: TObject;
const browser: ICefBrowser; const message, source: ustring; line: Integer;
out Result: Boolean);
begin
Caption := message;
Result := True;
end;
|
Как показать исходный код страницы?
// Способ первый
uses
{...,} ceflib;
procedure TForm1.Button1Click(Sender: TObject);
begin
Chromium1.Browser.MainFrame.GetSourceProc(procedure (const src: ustring)
var
source: ustring;
begin
source := src;
source := StringReplace(source, '<', '<', [rfReplaceAll]);
source := StringReplace(source, '>', '>', [rfReplaceAll]);
source := '<html><body>Source:<pre>' + source + '</pre></body></html>';
Form1.Chromium1.Browser.MainFrame.LoadString(source, 'source://html');
end);
end;
// Способ второй
uses
{...,} ceflib;
type
TForm1 = class(TForm)
{...}
private
HTML: ustring;
end;
procedure ShowSource(const Src: ustring);
begin
Form1.HTML := Src;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(HTML);
end;
procedure TForm1.Chromium1LoadEnd(Sender: TObject; const browser: ICefBrowser;
const frame: ICefFrame; httpStatusCode: Integer);
begin
if (browser <> nil) and (browser.Identifier = Chromium1.BrowserId) and
((frame = nil) or (frame.IsMain))
then
Chromium1.Browser.MainFrame.GetSourceProc(ShowSource);
end;
|
При использовании материала - ссылка на сайт обязательна
|
|