Использование CEF Browser Я пытаюсь подключиться к событию OnLoadEnd, чтобы пересечь дерево DOM.OnLoadEnd вызвал несколько раз из Chromum Embedded Framework
По какой-то странной причине я получаю VisitDom, называемый 2 раза.
procedure TForm1.FormCreate(Sender: TObject);
begin
FBrowser := TChromium.Create(Self);
FBrowser.Parent := TWinControl(Self);
FBrowser.OnLoadEnd := BrowserOnLoadEnd;
FBrowser.Load('http://google.com');
end;
procedure VisitDom(const Document: ICefDomDocument);
begin
ShowMessage(Document.Document.Name);
end;
procedure TForm1.BrowserOnLoadEnd(Sender: TObject;
const Browser: ICefBrowser; const Frame: ICefFrame; HttpStatusCode: Integer;
out Result: Boolean);
var
Visitor: TCefFastDomVisitor;
begin
if HttpStatusCode = 200 then
begin
Visitor := TCefFastDomVisitor.Create(VisitDom);
FBrowser.Browser.MainFrame.VisitDom(Visitor);
end;
end;
Любая идея, почему OnLoadEnd вызывается несколько раз?
Могу ли я спросить, как вы пришли к выводу, что «BrowserOnLoadEnd» вызывается дважды? вы поставили точку останова на «begin» или? Я не использовал CEF, но у меня странное ощущение, что этот «FBrowser.Browser.MainFrame.VisitDom» является генератором «двойного» события. – ComputerSaysNo
P.S. Я также вижу «выход из результата: логический», вы не должны убедиться, что (результат = True)? опять же, я прошу не уверен. – ComputerSaysNo
Просто интересно: почему вы устанавливаете производный класс TForm1 TWinControl в TWinControl при настройке родителя браузера? Это не правда. (например, TWinControl (Self); –