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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.07.2016, 23:30   #1
Yuran
Форумчанин
 
Регистрация: 18.02.2008
Сообщений: 198
По умолчанию chromium как определить координаты DOM элемента

Добрый вечер.

Использую компонент chromium.

Как определить координаты скажем <input type="file" id="myid">
чтобы сымитировать клик мышкой на этом элементе?

Нашел статью
https://learn.javascript.ru/coordinates

там описывается js функция
getBoundingClientRect()

но как ее использовать с chromium не могу догадаться.

Код:
code:='тут код js';
Chromium1.Browser.MainFrame.ExecuteJavaScript(code,'about:blank',0);
Прошу помощи.
Yuran вне форума Ответить с цитированием
Старый 20.07.2016, 23:41   #2
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

для клика координаты не нужны
come-on вне форума Ответить с цитированием
Старый 20.07.2016, 23:44   #3
Yuran
Форумчанин
 
Регистрация: 18.02.2008
Сообщений: 198
По умолчанию

Думал сократить. Ну ладно.
Попробуйте программно кликнуть на элементе
Код:
<input type="file" id="myid">
Ничего не произойдет. Диалоговое окно для выбора файла не откроется. Политика безопасности браузеров.

Так что нужно подвести мышь и сымитировать клик.
Для этого нужно знать куда эту мышь подвести. ну и тд
Yuran вне форума Ответить с цитированием
Старый 21.07.2016, 00:00   #4
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Код:
<input type="file" id="myid">
<a href="javascript:document.getElementById('myid').click(); ">try this</a>
кликает

Последний раз редактировалось Alex11223; 21.07.2016 в 08:02.
come-on вне форума Ответить с цитированием
Старый 21.07.2016, 00:23   #5
Yuran
Форумчанин
 
Регистрация: 18.02.2008
Сообщений: 198
По умолчанию

То есть вы предлагаете скриптом добавить в html код
Код:
<a href="javascriptocument.getElemen tById('myid').click(); ">try this</a>
а потом кликнуть на эту ссылку?
Yuran вне форума Ответить с цитированием
Старый 21.07.2016, 00:26   #6
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

ничего не предлагаю, а показываю что кликает без координат
come-on вне форума Ответить с цитированием
Старый 21.07.2016, 02:04   #7
Yuran
Форумчанин
 
Регистрация: 18.02.2008
Сообщений: 198
По умолчанию

Я все попробовал

Попытка была хорошая.
имеется
Код:
<input type="file" id="myid">
при клике вызыв диал окно выб файла
нужно кликнуть програмно.
Код:
Chromium1.Browser.MainFrame.ExecuteJavaScript('document.querySelector("myid").click();', 'about:blank', 0);
так не работает.

Вставляю в DOM код с помощью
Код:
CodeStr := CodeStr+'a=document.createElement("a");';
CodeStr := CodeStr+'a.setAttribute("id", "justclickme");';
CodeStr := CodeStr+'a.setAttribute("style", "position:fixed; left:400px; top:100px;");';
CodeStr := CodeStr+'a.setAttribute("href", "document.getElementById(\"myid\").click();");';
//CodeStr := CodeStr+'a.setAttribute("href", "#");';
//CodeStr := CodeStr+'a.setAttribute("OnClick", "document.getElementById(\"myid\").click();"';
CodeStr := CodeStr+'a.innerHTML="link to open dialog";';
CodeStr := CodeStr+'document.body.appendChild(a);';

Chromium1.Browser.MainFrame.ExecuteJavaScript(CodeStr, 'about:blank', 0);
Появляется ссылка
Код:
"link to open dialog"
кликая руками мой js срабатывает и диалог вызывается.
но кликая с помощью
Код:
Chromium1.Browser.MainFrame.ExecuteJavaScript('document.GetElementById("justclickme").click();', 'about:blank', 0);
ничего не происходит
хотя
Код:
Chromium1.Browser.MainFrame.ExecuteJavaScript('document.GetElementById("justclickme").style.color="red";', 'about:blank', 0);
цвет меняется.

Возвращаемся к первому вопросу
Цитата:
Как определить координаты скажем <input type="file" id="myid">
чтобы сымитировать клик мышкой на этом элементе?
Yuran вне форума Ответить с цитированием
Старый 21.07.2016, 15:25   #8
Yuran
Форумчанин
 
Регистрация: 18.02.2008
Сообщений: 198
По умолчанию

C координатами разобрался.

Как вот это использовать ?

Код:
procedure TCefBrowserRef.SendMouseClickEvent(x, y: Integer; typ: TCefMouseButtonType; mouseUp, clickCount: Integer);
Не могу понять.

Последний раз редактировалось Yuran; 21.07.2016 в 15:31.
Yuran вне форума Ответить с цитированием
Старый 21.07.2016, 15:27   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Разницу между
Код:
document.getElementById
и
Код:
document.GetElementById
не видите?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 21.07.2016, 15:44   #10
Yuran
Форумчанин
 
Регистрация: 18.02.2008
Сообщений: 198
По умолчанию

Это не важно. Ошибся при написании.
Элемент определяется. Только не кликается.

Вопрос в другом

как использовать
Код:
SendMouseClickEvent(x, y: Integer; typ: TCefMouseButtonType; mouseUp, clickCount: Integer);
Yuran вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск элемента в Chromium -Jack- Общие вопросы Delphi 1 12.11.2014 21:28
XML DOM Поиск элемента по значению Spot Общие вопросы Delphi 3 21.02.2013 09:50
Как определить координаты окна и завязать с DubleClick xelby Общие вопросы Delphi 6 19.10.2012 16:24
как определить координаты курсора snaem Общие вопросы .NET 0 23.04.2008 22:27
как определить координаты ячейки с найденным текстом Тимониссимо Безопасность, Шифрование 2 30.05.2007 15:23