Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2024, 13:03   #1
brownb
Форумчанин
 
Регистрация: 16.10.2016
Сообщений: 157
По умолчанию Tchromium обработка клика

Добый день!Подскажите как можно отследить нажатие кнопки или элемента на сайте?

Допустим есть кнопка <button id="777">test</button>

Cамом браузере кликаем на кнопку и получаем сообщение от делфи

Если клинута кнопка 777 то показать сообщение click
brownb вне форума Ответить с цитированием
Старый 19.03.2024, 14:56   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

первое, что пришло на ум: найти все хэндлы элементов (кнопок, окон ввода, чек-боксов...) на форме вашего браузера и проверять обращение к элементам, а конкретно к кнопкам Button.
но вот сама реализация...
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace на форуме Ответить с цитированием
Старый 20.03.2024, 00:48   #3
DIONISKA
Форумчанин
 
Регистрация: 07.11.2011
Сообщений: 161
По умолчанию

Цитата:
Сообщение от NetSpace Посмотреть сообщение
все хэндлы элементов
Максимум что можно найти это хэндл экземпляра render host :D
Цитата:
Сообщение от brownb Посмотреть сообщение
отследить нажатие кнопки или элемента
В теории можно сделать так:
1. На необходимый элемент повесить Event Listener когда ваша страница уже загружена, например в OnLoadEnd, и по его выполнению например выводить сообщение в консоль:
Код:
procedure Tfrmmain.Chromium1LoadEnd(Sender: TObject; const browser: ICefBrowser;
  const frame: ICefFrame; httpStatusCode: Integer);
begin
  frame.ExecuteJavaScript(
  'document.getElementById("777").addEventListener("click", function() { ' +
  ' console.log("button_777_clicked"); });', '',  0);
end;
В оригинальном CEF3 есть событие onQuery, но в CEF4Delphi не реализованно (как и в DCEF3), поэтому через консоль проще и быстрее.

2. Ждать и читать нужное сообщение в консоли (OnConsoleMessage):
Код:
procedure Tfrmmain.Chromium1ConsoleMessage(Sender: TObject;
  const browser: ICefBrowser; level: Cardinal; const message, source: ustring;
  line: Integer; out Result: Boolean);
begin
  if message='button_777_clicked' then
   begin
     //ваш код на нажатие
     ShowMessage('Button "777" click!');
   end;
end;
3. Наслаждаться результатом
Ещё как вариант можно поднять сервер и слать на него запросы из EventListener:
Код:
document.getElementById("777").addEventListener("click", function() {
	const request = new XMLHttpRequest();
	request.open("POST", "127.0.0.1:9090", true);
	request.setRequestHeader("Content-Type", "text/plain");
	request.send("777");
}
Или не поднимать, а искать и обрабатывать специфичный запрос. И тд и тп
DIONISKA вне форума Ответить с цитированием
Старый 21.03.2024, 09:23   #4
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Использовать Selenium. Но можно ли его использовать на Delphi не знаю. На C# очень просто и примеров на офсайте полно.
FaTaL вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обработка клика по pagecontrol kate158 Компоненты Delphi 1 26.09.2012 21:55
Обработка(отлов) клика по пункту меню Delphi_ProGer Общие вопросы Delphi 2 10.06.2012 21:49
Обработка событий (клика) по ячейке:) Phpexcel Microsoft Office Excel 5 25.06.2011 00:41
обработка клика мыши в создаваемом массиве панелей на форме jarrhead Компоненты Delphi 3 14.05.2011 13:57
Определение длины пути от клика до клика - как??? Enya Помощь студентам 0 11.05.2009 12:54