Раньше для того, чтоб получить исходный код в компоненте Chromium хватало выполнить подобный код:
1 2 3 4 |
var Txt:String; begin Txt:=Chrom.Browser.MainFrame.Source; end; |
Однако, с некоторых пор свойство Source перестало работать таким способом.
Теперь, чтоб получить исходный код, необходимо выполнить такой код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
public { Public declarations } HTML:ustring; ... procedure ShowSource(const SRC: ustring); begin Form1.HTML:=SRC; end; procedure TForm1.ChromLoadEnd(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; httpStatusCode: Integer); begin // это событие срабатывает, когда документ загружен if (browser <> nil) and (browser.Identifier = Chrom.BrowserId) and ((frame = nil) or (frame.IsMain)) then Chrom.Browser.MainFrame.GetSourceProc(ShowSource); end; procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Lines.Add(HTML); end; |
Нужно признать, что код усложнился. Не для чего разработчики внесли такие изменения… Но, факт – на лицо.
На Lazarus вот так:
procedure ShowSource(const SRC: ustring);
begin
Form1.HTML:=SRC;
end;
procedure TForm1.ChromLoadEnd(Sender: TObject; const browser: ICefBrowser;
const frame: ICefFrame; httpStatusCode: Integer);
begin
// это событие срабатывает, когда документ загружен
if (browser nil) and (browser.Identifier = Chrom.BrowserId) and
((frame = nil) or (frame.IsMain))
then
Chrom.Browser.MainFrame.GetSourceProc(@ShowSource); //Уточнение параметра
end;