Можете ли вы использовать AddEventListener с CEF4Delphi? - PullRequest
0 голосов
/ 08 июля 2019

Я использую Delphi XE2 и Chromium CEF4Delphi. Я пытаюсь использовать веб-страницу через компонент TChromiumWindow и хотел бы определить, когда элемент выбран / щелкнул.

Я видел этот пост ..

Delphi Chromium - запуск команды в приложении Delphi при нажатии пользователем кнопки на веб-странице

К сожалению, я не могу найти функцию AddEventListenerProc в библиотеке CEF4Delphi. Я также не могу найти альтернативный способ отслеживания нажатия кнопки / элемента.

Я хотел бы использовать компонент TChromiumWindow, чтобы действовать в качестве "внешнего интерфейса" для моего приложения, и хотел бы отслеживать нажатия кнопок пользователя и т. Д.

Может кто-нибудь помочь, пожалуйста? Я пробовал форум разработчиков, но не вижу там никакой активности и не смог зарегистрироваться.

Большое спасибо ..

1 Ответ

1 голос
/ 09 июля 2019

У проекта DCEF3 есть группа здесь: https://groups.google.com/forum/#!forum/delphichromiumembedded

Но проекты CEF4Delphi и OldCEF4Delphi имеют форум разработчиков здесь: https://www.briskbard.com/forum/

На этом форуме появляются новые сообщения почти каждый день, и я стараюсь отвечать на них как можно скорее, обычно менее чем за 24 часа.

Если у вас возникли проблемы с созданием учетной записи, просто отправьте мне сообщение, и я активирую вашу учетную запись вручную.

Ссылка, которую вы разместили, очень старая и с 2012 года многое изменилось в CEF.

Есть несколько способов определить, когда HTML-элемент был выбран, щелкнут и т. Д.

  • Вы можете использовать событие JavaScript, например «onclick», которое вызывает пользовательское расширение JavaScript. Это расширение будет отправлять сообщение процесса процессу браузера, чтобы уведомить, что пользователь щелкнул этот элемент.
  • Вы также можете использовать GlobalCEFApp.OnFocusedNodeChanged, который запускается, когда фокусируется HTML-элемент. Это событие выполняется в процессе «рендеринга», поэтому вам также необходимо отправить сообщение процесса в основной процесс браузера, что измененный элемент изменился.

Используйте демонстрации JSRTTIExtension или JSExtension в качестве шаблона для вашего приложения.

Они показывают, как установить событие "mouseover", которое вызывает функцию "myextension.mouseover", определенную в пользовательском расширении JS. Функция myextension.mouseover выполняет код Delphi и отправляет сообщение процесса в основной процесс браузера с некоторой HTML-информацией, отображаемой в строке состояния.

У них также есть пример для "MutationObserver", который вызывает обобщенную функцию "myextension.sendresulttobrowser" в расширении JS, которая отправляет атрибут "value" процессу браузера.

Создайте демонстрацию и щелкните правой кнопкой мыши веб-страницу, когда она будет полностью загружена. Затем выберите параметры «Установить событие наведения мыши» или «Добавить наблюдателя мутации», чтобы проверить, что я описал.

...