Для написания статьи на русском языке о том, как эффективно отслеживать клики по ссылкам в компоненте TChromium для Delphi-приложений, мы рассмотрим пример из контекста пользователя. В этом примере описывается проблема обнаружения клика по ссылке без изменения URL в браузере.
Как обнаружить клик в TChromium?
В вашем Delphi приложении вы используете компонент TChromium для отображения веб-страницы, на которой есть ссылка, вызывающая минимизацию приложения. Текущий метод обнаружения клика по этой ссылке заключается в отслеживании изменения адреса браузера:
procedure TForm1.Chromium1AddressChange(Sender: TObject; const browser: ICefBrowser;
const frame: ICefFrame; const url: ustring);
begin
if (url = 'file:///data/minimize.min') then
Application.Minimize;
end;
Однако, такой подход приводит к изменению URL в адресной строке браузера, что нежелательно. Поэтому цель состоит в том, чтобы обнаружить клик по ссылке без изменения URL.
Подтвержденный ответ заключается в использовании обработчика событий DOM для отслеживания кликов. Вместо ожидания изменения URL можно привязать событие click к элементу на странице:
<a id="minimize" href="">Минимизировать</a>
После загрузки страницы, в методе OnLoadEnd, следует найти этот элемент и назначить ему обработчик события клика:
procedure TForm1.Chromium1LoadEnd(Sender: TObject; const browser: ICefBrowser;
const frame: ICefFrame; httpStatusCode: Integer; out Result: Boolean);
begin
if Assigned(frame) then
begin
var DOMNode: ICefDomNode;
DOMNode := frame.GetDocument().GetElementById('minimize');
if Assigned(DOMNode) then
DOMNode.AddEventListenerProc('click', True, MinimizeClickEvent);
end;
end;
procedure TForm1.MinimizeClickEvent(const AEvent: ICefDomEvent);
begin
Application.Minimize;
end;
Таким образом, при клике по ссылке с идентификатором minimize, будет вызвана функция минимизации приложения без изменения URL в адресной строке.
Альтернативный ответ предлагает использовать более старые версии DCEF, где возможна работа с DOM, так как в CEF3 такой функционал отсутствует или изменён.
Заключение
Использование обработчиков событий DOM позволяет эффективно отслеживать клики по элементам на веб-странице без изменения адреса браузера. Это особенно полезно для интеграции взаимодействия между веб-приложением и вашим Delphi приложением, использующим TChromium.
Проблема заключается в том, как обнаружить клик по ссылке на веб-странице, отображаемой в компоненте TChromium для Delphi-приложений, без изменения URL в браузере.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS